Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
c4ad14c
add the first script and the first result from CVMFS
lldelisle Jun 26, 2026
ce80d99
add IDC DMs table
bernt-matthias Jun 26, 2026
49ec0e2
add a script to get dm and table links
lldelisle Jun 26, 2026
2726147
better parse the dm from IUC
lldelisle Jun 26, 2026
089769b
support URL in xml
lldelisle Jun 26, 2026
ee2165a
Get the usegalaxy.eu yaml from José
lldelisle Jun 26, 2026
1a3626d
Update the README to document the usegalaxy.eu output
lldelisle Jun 26, 2026
bc4b260
Initial implementation of script to import all fasta files from tool …
sveinugu Jun 26, 2026
644198c
Only added symlink if not already there. Added galaxy metadata as ali…
sveinugu Jun 26, 2026
a587e99
Check for duplicate unique_build_id values.
sveinugu Jun 26, 2026
696393b
Bugfix, wrong field for galaxy_tool_data_table_conf
sveinugu Jun 26, 2026
a765c35
Added continuation logic. Removed break after one
sveinugu Jun 26, 2026
ff70e7f
Added README content for refgetstore script
sveinugu Jun 26, 2026
5d6ac94
Fixed collection aliases and updated README
sveinugu Jun 26, 2026
3ff96bf
Updated README with info on front-end implementation
sveinugu Jun 26, 2026
3d88b24
write the ideas/TODO
lldelisle Jun 26, 2026
a77b98e
change mind for common values
lldelisle Jun 26, 2026
6031d06
store loc file in the tool_data_table_conf_to_yaml
lldelisle Jun 30, 2026
c8dede9
adapt all_fasta_files_to_refget_store to use loc_file
lldelisle Jun 30, 2026
a83ca8e
draft a all_fasta_files_to_refget_seqcol_digest
lldelisle Jun 30, 2026
4a383b8
fix/improve all_fasta_files_to_refget_seqcol_digest and describe it i…
lldelisle Jul 1, 2026
7a1f31a
Generate a sample for all_tables_content and generate corresponding d…
lldelisle Jul 1, 2026
344206d
Clarify README descriptions and fix terminology
bernt-matthias Jul 1, 2026
c8e5741
Merge pull request #1 from lldelisle/bernt-matthias-patch-1
lldelisle Jul 1, 2026
c451f00
find the psql command for transparency
lldelisle Jul 1, 2026
d4014ef
manual inspection of the CVMFS datatables
lldelisle Jul 2, 2026
efc025e
Added WARNING for incorrect FASTA file path
sveinugu Jul 2, 2026
a2ca412
Simplify output dir structure of all_fasta_files_to_refget_store.py
sveinugu Jul 2, 2026
d6bf548
Add uv virtual env installation instructions
sveinugu Jul 2, 2026
5bc41d3
Add script to start a SeqcolAPI server on top of Refgetstore
sveinugu Jul 2, 2026
e19eee9
fix path of the script in the README
lldelisle Jul 2, 2026
8797dcd
Added --no-store arg and a joint JSON output file to all_fasta_files_…
sveinugu Jul 2, 2026
6fe43b7
try to get a fasta centric view of the data_tables content
lldelisle Jul 2, 2026
4b57f6e
Merge branch 'datatable_sync' of github.com:lldelisle/idc into datata…
lldelisle Jul 2, 2026
0b8d7ee
Add a Path.absolute for output_path to ensure the correct symlink
lldelisle Jul 2, 2026
36a09ce
discard the all_fasta_files_to_refget_seqcol_digest.py and run the `-…
lldelisle Jul 2, 2026
a75dfda
fix ornAna1 bowtie-inspect command
lldelisle Jul 2, 2026
0391d7f
Fixed bug in symlink creation
sveinugu Jul 2, 2026
60a9cff
"aliases" is now a dict instead of list of lists
sveinugu Jul 2, 2026
c435123
all_fasta.json -> all_fasta.yml
sveinugu Jul 2, 2026
b2b7297
Exchange '/' with '!' in aliases to be compatible with SeqcolAPI impl…
sveinugu Jul 2, 2026
5fe456a
Added level_2_peek to all_fasta.yaml. Reordered fields
sveinugu Jul 3, 2026
e4e357c
Formatted with ruff
sveinugu Jul 3, 2026
a46d480
ignore empty lines in loc files
bernt-matthias Jul 3, 2026
8c793a5
initial commit of script to compute hashes and manifest
bernt-matthias Jul 10, 2026
920bdf3
include all tables
bernt-matthias Jul 13, 2026
96b133f
black
bernt-matthias Jul 13, 2026
f290740
add a bit of doc
bernt-matthias Jul 13, 2026
ea3b036
consider comma separated path lists and also use files as prefix
bernt-matthias Jul 13, 2026
abe1d32
Update sync/all_tables_content_add_hashes.py
bernt-matthias Jul 14, 2026
4bd2d2e
add the database output for DM on EU
lldelisle Jul 15, 2026
6470fad
rerun the all_fasta_files_to_refget_store.py --no-store on test.yml
lldelisle Jul 15, 2026
173afab
mention the script that computes hashes in the README
lldelisle Jul 15, 2026
0ce0f4f
create output dir if not exists
lldelisle Jul 15, 2026
2222f61
Draft instructions for Admins
lldelisle Jul 15, 2026
ca97fa7
more log for the digests
lldelisle Jul 15, 2026
54b4184
add doc
bernt-matthias Jul 14, 2026
2878763
document design decision
bernt-matthias Jul 15, 2026
3546422
Merge branch 'datatable_sync' of https://github.com/lldelisle/idc int…
bernt-matthias Jul 15, 2026
f1f1178
Remove ssh mention
lldelisle Jul 16, 2026
f9ae857
minor improvements to admin instructions
bernt-matthias Jul 16, 2026
a74175c
doc threads
bernt-matthias Jul 16, 2026
886960e
add explicit calls for cvmfs in the admins doc
bernt-matthias Jul 16, 2026
dcfaac4
update the ADMINS.md with size indications
lldelisle Jul 16, 2026
b06b287
use s3 bucket
lldelisle Jul 16, 2026
3061cee
get a fresh new CVMFS index
lldelisle Jul 16, 2026
7a94feb
use the fixed version of the all_fasta table
lldelisle Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ coverage.xml
# Django stuff:
*.log
local_settings.py
# But keep the logs from sync
!sync/*.log


# Flask stuff:
instance/
Expand Down Expand Up @@ -103,6 +106,11 @@ ENV/
# Simon's working directory
working/

# PyCharm
.idea

# Ansible installed artifacts
ansible/collections
ansible/roles/*.*

sync/refget_clone
15,333 changes: 15,333 additions & 0 deletions sync/20260706_EU_all_params_for_DM.tsv

Large diffs are not rendered by default.

94 changes: 94 additions & 0 deletions sync/ADMINS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# How to generate hashes for your database and compare it to other Galaxy instances?

For the moment these are instructions mainly for EU admins.

## Prerequisites

- You need to run the procedure from a machine that has read access to all indices and has write access to a working directory.
- You need to have python/venv installed on this machine.
- You need to have some space to write the results (we estimate to 600GB for the CVMFS refgetstore).

## Step by step procedure

### Get all scripts

The easiest way is to clone the repository:

```bash
git clone -b datatable_sync https://github.com/lldelisle/idc.git
script_directory=$PWD/idc/sync/
```

Alternatively, you can download each script independently:

```bash
script_directory=$PWD
wget "https://raw.githubusercontent.com/lldelisle/idc/refs/heads/datatable_sync/sync/tool_data_table_conf_to_yaml.py"
wget "https://raw.githubusercontent.com/lldelisle/idc/refs/heads/datatable_sync/sync/all_fasta_files_to_refget_store.py"
wget "https://raw.githubusercontent.com/lldelisle/idc/refs/heads/datatable_sync/sync/requirements.txt"
wget "https://raw.githubusercontent.com/lldelisle/idc/refs/heads/all_tables_content_add_hashes.py"
```

### Get the list of all indices available to users

The estimated output of this step is up to 30MB for CVMFS and less than 1MB for EU (this is the same script as I ran with José during the Cofest, just one more key per entry = the path of the loc file).

1. Identify your table config files (`tool_data_table_conf`). The easiest is to open the config file of your galaxy instance (`galaxy.yml`) and check in `galaxy.tool_data_table_config_path`.
2. Run the first python script to get the big yaml input of all other scripts:

```bash
tool_data_table="<first.xml> <second.xml> ..."
output_basename=<your instance name>_$(date -I)
# For EU
tool_data_table=/opt/galaxy/config/tool_data_table_conf.xml
output_basename=usegalaxy_eu_$(date -I)
python ${script_directory}/tool_data_table_conf_to_yaml.py --tool_data_table_conf ${tool_data_table} -o "${output_basename}.yml"

# For CVMFS
# Download it from github as there was some typos in the loc files
cvmfs_yaml=cvmfs_20260715_fixed.yml
wget "https://raw.githubusercontent.com/lldelisle/idc/refs/heads/fix_typos_in_fasta_CVMFS/sync/cvmfs_20260715.yml" -O ${cvmfs_yaml}
output_basename_cvmfs=CVMFS_20260715
```

### Get the digests of all indices

The estimated output of this step should not be more than 10GB.

This step can be really long as the instance can have a lot of indices and each of them can be large so computing a digest of each of them is long.

By default this script uses 8 threads to compute checksums for the files referred by one data table entry. The number of threads can be set with `--threads` (default is 8). The actual CPU usage will be much smaller (at least on network storage, i.e. you can use it to hide IO time).

```bash
mkdir ${output_basename}
python ${script_directory}/all_tables_content_add_hashes.py -i "${output_basename}.yml" -o "${output_basename}" -log info

# For CVMFS
mkdir ${output_basename_cvmfs}
python ${script_directory}/all_tables_content_add_hashes.py -i "${cvmfs_yaml}" -o "${output_basename_cvmfs}" -log info

```

### Generate Refgetstore instance from all FASTA tables (or just compute the hashes)

If you have enough space, we recommend to generate a Refgetstore instance as you will be able to efficiently retrieve sequences and genomes, metadata for identifying and comparing reference genomes, coordinate systems, genome browser compatibility and more. We think that the estimated size of a Refgetstore is about 25/35% of the size of the fasta files. For CVMFS, we estimate to 400-600GB.

If you prefer to first simply generate hashes use the option `--no-store`.

This step requires some dependencies.

```bash
uv venv .venv
# Or python -m venv .venv
. .venv/bin/activate
uv pip install -r requirements.txt
# Or pip install -r requirements.txt
python ${script_directory}/all_fasta_files_to_refget_store.py --no-store "${output_basename}.yml" "${output_basename}"

# For CVMFS
python ${script_directory}/all_fasta_files_to_refget_store.py "${output_basename_cvmfs}.yml" "${output_basename_cvmfs}"
```

### Share your results

We will provide you a s3 bucket to put the 2 directories.
Loading