Spaces:
Running
Running
Download access.js from HuggingFaceBio/carbon-a-release: direct link, hf CLI and curl.
- Browser
- Download file 2.96 kB
-
https://huggingface.co/spaces/HuggingFaceBio/carbon-a-release/resolve/main/access.js
- Command line
-
hf download hf://spaces/HuggingFaceBio/carbon-a-release/access.js
-
curl -L -o access.js https://huggingface.co/spaces/HuggingFaceBio/carbon-a-release/resolve/main/access.js
2.96 kB
| // Paths come from downloaded assembly metadata, never a guessed repository URL. | |
| function annotationPath(a){return D.loci.paths[a.accession]||null} | |
| function updateDataAccess(a){ | |
| const path=annotationPath(a),known=!!path; | |
| $('#sel-files').hidden=!known;$('#sel-files').href=known?'https://huggingface.co/buckets/'+D.loci.bucket+'/tree/'+path:''; | |
| $('#sel-download').textContent=known?'Download code':'Check annotation files ↗'; | |
| $('#sel-availability').textContent=known?'GFF3 · coding sequences · proteins':'Gene files are not recorded in this snapshot.'; | |
| } | |
| function annotationCode(a){ | |
| const bucket=D.loci.bucket,path=annotationPath(a); | |
| const setup=`from pathlib import Path\nfrom huggingface_hub import HfApi\n\napi = HfApi() # uses your saved Hugging Face login\nbucket = ${JSON.stringify(bucket)}\naccession = ${JSON.stringify(a.accession)}\n`; | |
| const lookup=path?`prefix = ${JSON.stringify(path)}\n`:`divisions = [\n "fungi", "invertebrate", "plant", "protozoa",\n "vertebrate_mammalian", "vertebrate_other",\n]\nmetadata = list(api.get_bucket_paths_info(\n bucket, [f"cds/{d}/{accession}/metadata.json" for d in divisions]\n))\nif not metadata:\n raise FileNotFoundError(\n f"No published gene files found for {accession}."\n )\nprefix = metadata[0].path.rsplit("/", 1)[0]\n`; | |
| return setup+lookup+`\noutput = Path(accession)\noutput.mkdir(parents=True, exist_ok=True)\nfiles = [\n "annotations.gff3.gz", # predicted gene / CDS coordinates\n "cds.fna.gz", # coding nucleotide sequences\n "proteins.faa.gz", # predicted protein sequences\n "metadata.json", # counts and pipeline provenance\n]\napi.download_bucket_files(\n bucket,\n [(f"{prefix}/{name}", output / name) for name in files],\n raise_on_missing_files=True,\n)\n`; | |
| } | |
| function showDataAccess(a){ | |
| if(!a)return;stopSweep();selectAssembly(a); | |
| const path=annotationPath(a); | |
| $('#data-assembly').textContent=a.name+' · '+a.accession; | |
| $('#data-description').textContent=path?'Download the published predictions for this assembly, with pipeline provenance.':'This snapshot has no published gene-file path for this assembly. The code below checks the current bucket and downloads the files if available.'; | |
| $('#data-browse').href='https://huggingface.co/buckets/'+D.loci.bucket+'/tree/'+(path||'cds'); | |
| $('#data-browse').textContent=path?'Browse this assembly’s files ↗':'Browse published gene files ↗'; | |
| $('#data-code').textContent=annotationCode(a);$('#copy-status').textContent='';$('#data-dialog').showModal(); | |
| } | |
| async function copyDataCode(){ | |
| const code=$('#data-code').textContent; | |
| try{await navigator.clipboard.writeText(code);$('#copy-status').textContent='Copied'} | |
| catch{const range=document.createRange();range.selectNodeContents($('#data-code'));const selection=window.getSelection();selection.removeAllRanges();selection.addRange(range);$('#copy-status').textContent='Code selected — press Ctrl/Cmd+C'} | |
| } | |