mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-19 10:40:23 +08:00
87 lines
2.5 KiB
Python
87 lines
2.5 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
Script that imports locally stored data as a new dataset for the user
|
|
Usage: import id outputfile
|
|
"""
|
|
from __future__ import print_function
|
|
|
|
import sys
|
|
from shutil import copyfile
|
|
|
|
assert sys.version_info[:2] >= (2, 6)
|
|
|
|
BUFFER = 1048576
|
|
|
|
uids = sys.argv[1].split(",")
|
|
out_file1 = sys.argv[2]
|
|
|
|
# remove NONE from uids
|
|
have_none = True
|
|
while have_none:
|
|
try:
|
|
uids.remove("None")
|
|
except ValueError:
|
|
have_none = False
|
|
|
|
|
|
# create dictionary keyed by uid of tuples of (displayName,filePath,build) for all files
|
|
available_files = {}
|
|
try:
|
|
filename = sys.argv[-1]
|
|
for line in open(filename):
|
|
if not line or line[0:1] == "#":
|
|
continue
|
|
fields = line.split("\t")
|
|
try:
|
|
info_type = fields.pop(0)
|
|
|
|
if info_type.upper() == "DATA":
|
|
uid = fields.pop(0)
|
|
org_num = fields.pop(0)
|
|
chr_acc = fields.pop(0)
|
|
feature = fields.pop(0)
|
|
filetype = fields.pop(0)
|
|
path = fields.pop(0).replace("\r", "").replace("\n", "")
|
|
|
|
file_type = filetype
|
|
build = org_num
|
|
description = uid
|
|
else:
|
|
continue
|
|
except Exception:
|
|
continue
|
|
|
|
available_files[uid] = (description, path, build, file_type, chr_acc)
|
|
except Exception:
|
|
print("It appears that the configuration file for this tool is missing.", file=sys.stderr)
|
|
|
|
# create list of tuples of (displayName,FileName,build) for desired files
|
|
desired_files = []
|
|
for uid in uids:
|
|
try:
|
|
desired_files.append(available_files[uid])
|
|
except Exception:
|
|
continue
|
|
|
|
# copy first file to contents of given output file
|
|
file1_copied = False
|
|
while not file1_copied:
|
|
try:
|
|
first_file = desired_files.pop(0)
|
|
except IndexError:
|
|
print("There were no valid files requested.", file=sys.stderr)
|
|
sys.exit()
|
|
file1_desc, file1_path, file1_build, file1_type, file1_chr_acc = first_file
|
|
try:
|
|
copyfile(file1_path, out_file1)
|
|
print("#File1\t" + file1_desc + "\t" + file1_chr_acc + "\t" + file1_build + "\t" + file1_type)
|
|
file1_copied = True
|
|
except Exception:
|
|
print("The file specified is missing.", file=sys.stderr)
|
|
continue
|
|
|
|
# Tell post-process filter where remaining files reside
|
|
for extra_output in desired_files:
|
|
file_desc, file_path, file_build, file_type, file_chr_acc = extra_output
|
|
print("#NewFile\t" + file_desc + "\t" + file_chr_acc + "\t" + file_build + "\t" + file_path + "\t" + file_type)
|