Commit 7b170ac9 authored by Anika Treffehn's avatar Anika Treffehn
Browse files

modified preprocessing metadata handling

parent e342db42
Loading
Loading
Loading
Loading
+27 −8
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ from abc import ABC, abstractmethod
from itertools import repeat
from multiprocessing import Pool
from pathlib import Path
import shutil
from shutil import copyfile
from time import sleep
from typing import Iterable, Union
@@ -356,13 +355,32 @@ def preprocess(cfg, logger):
            cfg.items_list, cfg.preprocessing_2["concatenation_order"]
        )

    if cfg.metadata_path[0] is not None:
        for item_idx in range(len(cfg.metadata_path)):
            for obj_idx in range(len(cfg.metadata_path[item_idx])):
                if cfg.metadata_path[item_idx][obj_idx]:
                    cfg.metadata_path[item_idx][obj_idx] = cfg.out_dirs[0] / Path(
                        f"{cfg.items_list[item_idx].stem}.wav.{obj_idx}.csv"
                    )
    # set new metadata files
    try:
        preproc_output_fmt = chain[0].out_fmt
    except AttributeError:
        preproc_output_fmt = chain[0].in_fmt

    cfg.metadata_path = []

    for item_idx in range(len(cfg.items_list)):
        list_item = []
        # ISM metadata
        if "ISM" in preproc_output_fmt:
            num_obj = int(preproc_output_fmt[3])
            for obj_idx in range(num_obj):
                list_item.append(cfg.out_dirs[0] / Path(f"{cfg.items_list[item_idx].stem}.wav.{obj_idx}.csv"))

        # MASA metadata
        if "MASA" in preproc_output_fmt:
            list_item.append(cfg.out_dirs[0] / Path(f"{cfg.items_list[item_idx].stem}.wav.met"))

        # no metadata
        if not "ISM" in preproc_output_fmt and not "MASA" in preproc_output_fmt:
            list_item.append(None)

        cfg.metadata_path.append(list_item)

    # remove already applied processing stage
    cfg.proc_chains = cfg.proc_chains[1:]
    cfg.tmp_dirs = cfg.tmp_dirs[1:]
@@ -475,6 +493,7 @@ def process_item(
                # no conversion in preprocessing 2
                bool_ism = "ISM" in p.in_fmt
                bool_masa = "MASA" in p.in_fmt
                out_format = p.in_fmt
            elif isinstance(out_format, str):
                # if out format is string
                bool_ism = "ISM" in out_format