code: def train_val_split(self, train_split=0.6):
      image_files = np.array(self.image_files)
      label_files = np.array(self.label_files)
      np.random.seed(0)
      state = np.random.get_state()
      np.random.shuffle(image_files)
      np.random.set_state(state)
      np.random.shuffle(label_files)
      train_len = round(len(self.image_files) * train_split)
      self.train_image_files = self.image_files[:train_len]
      self.val_image_files = self.image_files[train_len:]
      self.train_label_files = self.label_files[:train_len]
      self.val_label_files = self.label_files[train_len:]
  
file_path: PaddleSeg/contrib/MedicalSeg/tools/prepare_abdomen.py
imports: import os
  import sys
  import os.path
  import time
  import json
  import numpy
  from tqdm import tqdm
  from prepare import Prep
  from preprocess_utils import HUnorm, ignore_label, join_paths
  from medicalseg.utils import wrapped_partial
label_desc: Use image node_id 4 for calling the Prep_abdomen obj's underlying member method code with example usage: obj.train_val_split(train_split) without return types