Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
cfg = auxiliaryfunctions.read_config(config)
project_path = str(Path(config).parents[0])
cfg['project_path'] = project_path
if 'Reaching' in project_path:
video_file = os.path.join(project_path, 'videos','reachingvideo1.avi')
elif 'openfield' in project_path:
video_file = os.path.join(project_path, 'videos','m4s1.mp4')
else:
print("This is not an offical demo dataset.")
if 'WILL BE AUTOMATICALLY UPDATED BY DEMO CODE' in cfg['video_sets'].keys():
cfg['video_sets'][str(video_file)] = cfg['video_sets'].pop('WILL BE AUTOMATICALLY UPDATED BY DEMO CODE')
auxiliaryfunctions.write_config(config,cfg)
Linux/MacOs
>>> deeplabcut.create_pretrained_human_project('human','Linus',['/data/videos/mouse1.avi'],'/analysis/project/',copy_videos=False)
Windows:
>>> deeplabcut.create_pretrained_human_project('human','Bill',[r'C:\yourusername\rig-95\Videos\reachingvideo1.avi'],r'C:\yourusername\analysis\project' copy_videos=False)
Users must format paths with either: r'C:\ OR 'C:\\ <- i.e. a double backslash \ \ )
--------
"""
cfg=deeplabcut.create_new_project(project,experimenter,videos,working_directory,copy_videos,videotype)
config = auxiliaryfunctions.read_config(cfg)
config['bodyparts'] = ['ankle1','knee1','hip1','hip2','knee2','ankle2','wrist1','elbow1','shoulder1','shoulder2','elbow2','wrist2','chin','forehead']
config['skeleton'] = [['ankle1', 'knee1'],['ankle2', 'knee2'],['knee1', 'hip1'],['knee2', 'hip2'],['hip1', 'hip2'], ['shoulder1', 'shoulder2'], ['shoulder1', 'hip1'], ['shoulder2', 'hip2'], ['shoulder1', 'elbow1'], ['shoulder2', 'elbow2'], ['chin', 'forehead'], ['elbow1', 'wrist1'], ['elbow2', 'wrist2']]
config['default_net_type']='resnet_101'
auxiliaryfunctions.write_config(cfg,config)
config = auxiliaryfunctions.read_config(cfg)
train_dir = Path(os.path.join(config['project_path'],str(auxiliaryfunctions.GetModelFolder(trainFraction=config['TrainingFraction'][0],shuffle=1,cfg=config)),'train'))
test_dir = Path(os.path.join(config['project_path'],str(auxiliaryfunctions.GetModelFolder(trainFraction=config['TrainingFraction'][0],shuffle=1,cfg=config)),'test'))
# Create the model directory
train_dir.mkdir(parents=True,exist_ok=True)
test_dir.mkdir(parents=True,exist_ok=True)
modelfoldername=auxiliaryfunctions.GetModelFolder(trainFraction=config['TrainingFraction'][0],shuffle=1,cfg=config)
path_train_config = str(os.path.join(config['project_path'],Path(modelfoldername),'train','pose_cfg.yaml'))
path_test_config = str(os.path.join(config['project_path'],Path(modelfoldername),'test','pose_cfg.yaml'))
# Download the weights and put then in appropriate directory
cwd = os.getcwd()
elif os.path.isfile(os.path.join(folder,'CollectedData_'+cfg['scorer']+'.h5')): #Folder that contains human data set...
pass
else:
print("The following folder was not manually refined,...",folder)
flagged=True
pass #this folder does not contain a MachineLabelsRefine file (not updated...)
if flagged==False:
# updates iteration by 1
iter_prev=cfg['iteration']
if not forceiterate:
cfg['iteration']=int(iter_prev+1)
else:
cfg['iteration']=forceiterate
auxiliaryfunctions.write_config(config,cfg)
print("Merged data sets and updated refinement iteration to "+str(cfg['iteration'])+".")
print("Now you can create a new training set for the expanded annotated images (use create_training_dataset).")
else:
print("Please label, or remove the un-corrected folders.")
cfg_file['x2']=640
cfg_file['y1']=277
cfg_file['y2']=624
cfg_file['batch_size']=8 #batch size during inference (video - analysis); see https://www.biorxiv.org/content/early/2018/10/30/457242
cfg_file['corner2move2']=(50,50)
cfg_file['move2corner']=True
cfg_file['skeleton']=[['bodypart1','bodypart2'],['objectA','bodypart3']]
cfg_file['skeleton_color']='black'
cfg_file['pcutoff']=0.1
cfg_file['dotsize']=12 #for plots size of dots
cfg_file['alphavalue']=0.7 #for plots transparency of markers
cfg_file['colormap']='jet' #for plots type of colormap
projconfigfile=os.path.join(str(project_path),'config.yaml')
# Write dictionary to yaml config file
auxiliaryfunctions.write_config(projconfigfile,cfg_file)
print('Generated "{}"'.format(project_path / 'config.yaml'))
print("\nA new project with name %s is created at %s and a configurable file (config.yaml) is stored there. Change the parameters in this file to adapt to your project's needs.\n Once you have changed the configuration file, use the function 'extract_frames' to select frames for labeling.\n. [OPTIONAL] Use the function 'add_new_videos' to add new videos to your project (at any stage)." %(project_name,str(wd)))
return projconfigfile
for vid in toberemoved:
del cfg['video_sets'][vid]
#Load updated lists:
videos = cfg['video_sets'].keys()
video_names = [Path(i).stem for i in videos]
for vn in alldatafolders:
if vn in video_names:
pass
else:
print(vn, " is missing in config file >> adding it!")
#cfg['video_sets'][vn]
cfg['video_sets'].update({os.path.join(prefix,vn+suffix) : {'crop': ', '.join(map(str, [0, width, 0, height]))}})
auxiliaryfunctions.write_config(config,cfg)
video_path = os.readlink(video)
vcap = cv2.VideoCapture(video_path)
if vcap.isOpened():
# get vcap property
width = int(vcap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(vcap.get(cv2.CAP_PROP_FRAME_HEIGHT))
if coords == None:
cfg['video_sets'].update({video_path : {'crop': ', '.join(map(str, [0, width, 0, height]))}})
else:
c = coords[idx]
cfg['video_sets'].update({video_path : {'crop': ', '.join(map(str, c))}})
else:
print("Cannot open the video file!")
auxiliaryfunctions.write_config(config,cfg)
print("New video was added to the project! Use the function 'extract_frames' to select frames for labeling.")
self.end_frames_sizer.ShowItems(show=True)
self.widget_panel.Layout()
self.slider.SetMax(self.numberFrames)
self.startFrame.SetMax(self.numberFrames-1)
self.endFrame.SetMax(self.numberFrames)
self.x1 = int(self.new_x1)
self.x2 = int(self.new_x2)
self.y1 = int(self.new_y1)
self.y2 = int(self.new_y2)
self.canvas.mpl_disconnect(self.cid)
self.axes.clear()
self.currFrame = (self.slider.GetValue())
self.update()
# Update the config.yaml file
self.cfg['video_sets'][self.video_source] = {'crop': ', '.join(map(str, [self.x1, self.x2, self.y1, self.y2]))}
auxiliaryfunctions.write_config(self.config_path,self.cfg)