def __init__()

in src/features.py [0:0]


    def __init__(self, config=None, net_idx=-1, device="cpu", **kwargs):
        self.n_ray_samples = config.numRaymarchSamples[net_idx]
        self.z_near = 0.001 if not config.zNear else config.zNear[net_idx]
        self.z_far = 1.0 if not config.zFar else config.zFar[net_idx]
        self.train_with_gt_depth = config.trainWithGTDepth
        self.deterministic_sampling = config.deterministicSampling
        noise_amplitude = 0.0 if not config.rayMarchSamplingNoise else config.rayMarchSamplingNoise[net_idx]
        z_step = (self.z_far - self.z_near) / self.n_ray_samples if not config.rayMarchSamplingStep else \
            config.rayMarchSamplingStep[net_idx]
        self.z_sampler = getattr(import_module("nerf_raymarch_common"), config.rayMarchSampler[net_idx])\
            (self.z_near, self.z_far, self.n_ray_samples, z_step=z_step, noise_amplitude=noise_amplitude, config=config,
             net_idx=net_idx)
        self.depth = None
        self.depth_range = None
        self.depth_transform = None
        self.max_depth = None
        self.n_feat = 6
        self.config = config
        self.net_idx = net_idx
        self.w = 0
        self.h = 0
        self.view = None
        self.view_cell_center = None
        self.device = device

        self.perturb = config.perturb
        self.rayMarchNormalizationCenter = config.rayMarchNormalizationCenter

        if config.rayMarchNormalization:
            self.normalizationFunction = nerf_get_normalization_function(config.rayMarchNormalization[net_idx])
            self.abbr = self.abbr + nerf_get_normalization_function_abbr(config.rayMarchNormalization[net_idx])
        else:
            self.normalizationFunction = nerf_get_normalization_function(None)
            self.abbr = self.abbr + nerf_get_normalization_function_abbr(None)

        if config.posEncArgs[net_idx] == "none":
            self.enc_args = []
            self.n_freq_pos, self.n_freq_dir = -1, -1
        else:
            self.enc_args = [int(x) for x in config.posEncArgs[net_idx].split('-')]
            self.n_freq_pos, self.n_freq_dir = self.enc_args[0], self.enc_args[1]

        enc_type = self.config.posEnc[net_idx]
        self.enc_type = enc_type
        self.pos_enc = FeatureEncoding.get_encoding(enc_type)(config, f"pos{net_idx}")
        self.dir_enc = FeatureEncoding.get_encoding(enc_type)(config, f"dir{net_idx}")

        if enc_type == "nerf":
            self.n_feat = self.n_freq_pos * 3 * 2 + 3 + 3 + self.n_freq_dir * 3 * 2  # 4 for dir encoding according to paper