Skip to content

Hardcoded 12-leads #52

@nvelingker

Description

@nvelingker

survivors = np.random.uniform(0, 1, size=12) >= self.mask_leads_prob

hello,

Trying to use fewer than 12 leads leads to an issue here. Might I suggest an improved version:

    def __call__(self, sample):
        if self.p >= np.random.uniform(0,1):
            new_sample = sample.new_zeros(sample.size())
            num_leads = sample.size(0)
            if self.mask_leads_selection == "random":
                survivors = np.random.uniform(0, 1, size=num_leads) >= self.mask_leads_prob
                new_sample[survivors] = sample[survivors]
            elif self.mask_leads_selection == "conditional":
                # original implementation assumes 12 leads split into first 6 and last 6.
                # We generalize by splitting the leads into two halves.
                n_total = num_leads
                half = n_total // 2
                n1, n2 = self.mask_leads_condition if self.mask_leads_condition is not None else (4,5)
                n1 = min(n1, half)
                n2 = min(n2, n_total - half)
                # leads to mask count = half - n1 and half - n2 in two halves
                s1 = np.array(random.sample(list(np.arange(half)), half - n1))
                s2 = np.array(random.sample(list(np.arange(half, n_total)), (n_total - half) - n2))
                new_sample[s1] = sample[s1]
                new_sample[s2] = sample[s2]
            else:
                # fallback: no masking if unknown selection mode
                new_sample = sample.clone()
        else:
            new_sample = sample.clone()
        return new_sample.float()

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions