Refactor rearrange_OUMVLP
Code refactoring to improve reading and performance
This commit is contained in:
+32
-46
@@ -1,59 +1,45 @@
|
|||||||
|
import argparse
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from tqdm import tqdm
|
from tqdm import tqdm
|
||||||
import argparse
|
|
||||||
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Test')
|
TOTAL_SUBJECTS = 10307
|
||||||
parser.add_argument('--input_path', default='/home1/data/OUMVLP_raw', type=str,
|
|
||||||
help='Root path of raw dataset.')
|
|
||||||
parser.add_argument('--output_path', default='/home1/data/OUMVLP_rearranged', type=str,
|
|
||||||
help='Root path for output.')
|
|
||||||
|
|
||||||
|
|
||||||
opt = parser.parse_args()
|
def sanitize(name: str) -> (str, str):
|
||||||
|
return name.split('_')[1].split('-')
|
||||||
INPUT_PATH = opt.input_path
|
|
||||||
OUTPUT_PATH = opt.output_path
|
|
||||||
|
|
||||||
|
|
||||||
def mv_dir(src, dst):
|
def rearrange(input_path: Path, output_path: Path) -> None:
|
||||||
shutil.copytree(src, dst)
|
os.makedirs(output_path, exist_ok=True)
|
||||||
print(src, dst)
|
|
||||||
|
for folder in input_path.iterdir():
|
||||||
|
print(f'Rearranging {folder}')
|
||||||
|
view, seq = sanitize(folder.name)
|
||||||
|
progress = tqdm(total=TOTAL_SUBJECTS)
|
||||||
|
for sid in folder.iterdir():
|
||||||
|
src = os.path.join(input_path, f'Silhouette_{view}-{seq}', sid.name)
|
||||||
|
dst = os.path.join(output_path, sid.name, seq, view)
|
||||||
|
os.makedirs(dst, exist_ok=True)
|
||||||
|
for subfile in os.listdir(src):
|
||||||
|
if subfile.endswith('.png'):
|
||||||
|
os.symlink(os.path.join(src, subfile),
|
||||||
|
os.path.join(dst, subfile))
|
||||||
|
else:
|
||||||
|
os.remove(os.path.join(src, subfile))
|
||||||
|
progress.update(1)
|
||||||
|
|
||||||
|
|
||||||
sils_name_list = os.listdir(INPUT_PATH)
|
if __name__ == '__main__':
|
||||||
name_space = 'Silhouette_'
|
parser = argparse.ArgumentParser(description='OUMVLP rearrange tool')
|
||||||
views = sorted(list(
|
parser.add_argument('-i', '--input_path', required=True, type=str,
|
||||||
set([each.replace(name_space, '').split('-')[0] for each in sils_name_list])))
|
help='Root path of raw dataset.')
|
||||||
seqs = sorted(list(
|
parser.add_argument('-o', '--output_path', default='OUMVLP_rearranged', type=str,
|
||||||
set([each.replace(name_space, '').split('-')[1] for each in sils_name_list])))
|
help='Root path for output.')
|
||||||
ids = list()
|
|
||||||
for each in sils_name_list:
|
|
||||||
ids.extend(os.listdir(os.path.join(INPUT_PATH, each)))
|
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
progress = tqdm(total=len(set(ids)))
|
rearrange(Path(args.input_path), Path(args.output_path))
|
||||||
|
|
||||||
|
|
||||||
results = list()
|
|
||||||
pid = 0
|
|
||||||
for _id in sorted(set(ids)):
|
|
||||||
progress.update(1)
|
|
||||||
for _view in views:
|
|
||||||
for _seq in seqs:
|
|
||||||
seq_info = [_id, _seq, _view]
|
|
||||||
name = name_space + _view + '-' + _seq + '/' + _id
|
|
||||||
src = os.path.join(INPUT_PATH, name)
|
|
||||||
dst = os.path.join(OUTPUT_PATH, *seq_info)
|
|
||||||
if os.path.exists(src):
|
|
||||||
try:
|
|
||||||
if os.path.exists(dst):
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
os.makedirs(dst)
|
|
||||||
for subfile in os.listdir(src):
|
|
||||||
os.symlink(os.path.join(src, subfile),
|
|
||||||
os.path.join(dst, subfile))
|
|
||||||
except OSError as err:
|
|
||||||
print(err)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user