AURAD_dataset / chexlocalize /json_no_device.py
diing's picture
Add files using upload-large-folder tool
e4bd0ba verified
Raw
History Blame Contribute Delete
1.84 kB
import json
from pathlib import Path
infile = Path("/data16T/chestx-ray/AURAD_dataset/chexlocalize/test_prompt_text2layout_multi.json")
outfile = Path("/data16T/chestx-ray/AURAD_dataset/chexlocalize/test_prompt_text2layout_multi_no_device.json")
removed_attn_count = 0
modified_prompt_count = 0
removed_empty_prompt_count = 0
kept_count = 0
def remove_support_from_prompt(prompt: str) -> str:
if not prompt:
return ""
parts = [x.strip() for x in prompt.split(",")]
new_parts = [x for x in parts if x and "Support Devices" not in x]
return ", ".join(new_parts)
with infile.open("r", encoding="utf-8") as f_in, outfile.open("w", encoding="utf-8") as f_out:
for line in f_in:
line = line.strip()
if not line:
continue
item = json.loads(line)
old_attn_list = item.get("attn_list", [])
new_attn_list = []
for disease, mask_path in old_attn_list:
if disease == "Support Devices":
removed_attn_count += 1
else:
new_attn_list.append([disease, mask_path])
item["attn_list"] = new_attn_list
old_prompt = item.get("prompt", "")
new_prompt = remove_support_from_prompt(old_prompt)
if new_prompt != old_prompt:
modified_prompt_count += 1
item["prompt"] = new_prompt
# 删除 prompt 为空的样本
if item["prompt"] == "":
removed_empty_prompt_count += 1
continue
f_out.write(json.dumps(item, ensure_ascii=False) + "\n")
kept_count += 1
print(f"saved to: {outfile}")
print(f"kept samples: {kept_count}")
print(f"removed 'Support Devices' in attn_list: {removed_attn_count}")
print(f"modified prompts: {modified_prompt_count}")
print(f"removed empty-prompt samples: {removed_empty_prompt_count}")