Skip to content

Restrict DLC dependencies for v1 pipeline (<3.0) #1604

Description

@rpswenson

Describe the bug
Something fails to import when inserting a new project to the DLCProject table. I recently made a new spyglass dlc environment from environment_dlc.yml since my old environment had the wrong version of python so maybe that's related?

Error Stack
ImportError                               Traceback (most recent call last)
Cell In[4], line 7
      4 frames_per_video = 20
      5 bodyparts = ["redLED_C", "greenLED", "tailBase", "tailTip", "nose", "earL", "earR", "hindJointL", "hindJointR", "spine1", "spine2", "hindlimbL", "hindlimbR", "forelimbL",
      6             "forelimbR"]
----> 7 project_key = sgp.DLCProject.insert_new_project(
      8     project_name=project_name,
      9     bodyparts=bodyparts,
     10     lab_team=team_name,
     11     frames_per_video=frames_per_video,
     12     video_list=video_list,
     13     skip_duplicates=True,
     14 )

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/spyglass/position/v1/position_dlc_project.py:259](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/spyglass/position/v1/position_dlc_project.py#line=258), in DLCProject.insert_new_project(cls, project_name, bodyparts, lab_team, frames_per_video, video_list, groupname, project_directory, output_path, **kwargs)
    221 @classmethod
    222 def insert_new_project(
    223     cls,
   (...)
    232     **kwargs,
    233 ):
    234     """Insert a new project into DLCProject table.
    235 
    236     Parameters
   (...)
    257         (Default is '[/nimbus/deeplabcut/videos/](http://localhost:6504/nimbus/deeplabcut/videos/)')
    258     """
--> 259     from deeplabcut import create_new_project
    261     project_name = sanitize_unix_name(project_name)
    263     if (existing := cls()._existing_project(project_name)) is not None:

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/__init__.py:52](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/__init__.py#line=51)
     34 from .compat import (
     35     analyze_images,
     36     analyze_time_lapse_frames,
   (...)
     49     visualize_scoremaps,
     50 )
     51 from .core.engine import Engine
---> 52 from .create_project import (
     53     add_new_videos,
     54     create_new_project,
     55     create_new_project_3d,
     56     create_pretrained_human_project,
     57     create_pretrained_project,
     58     load_demo_data,
     59 )
     60 from .generate_training_dataset import (
     61     adddatasetstovideolistandviceversa,
     62     check_labels,
   (...)
     73     mergeandsplit,
     74 )
     75 from .modelzoo.video_inference import video_inference_superanimal

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/create_project/__init__.py:13](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/create_project/__init__.py#line=12)
     11 from deeplabcut.create_project.add import add_new_videos
     12 from deeplabcut.create_project.demo_data import load_demo_data
---> 13 from deeplabcut.create_project.modelzoo import (
     14     create_pretrained_human_project,
     15     create_pretrained_project,
     16 )
     17 from deeplabcut.create_project.new import create_new_project
     18 from deeplabcut.create_project.new_3d import create_new_project_3d

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/create_project/modelzoo.py:37](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/create_project/modelzoo.py#line=36)
     33 from deeplabcut.generate_training_dataset.trainingsetmanipulation import (
     34     MakeInference_yaml,
     35 )
     36 from deeplabcut.modelzoo.utils import get_super_animal_project_cfg
---> 37 from deeplabcut.pose_estimation_pytorch.config.make_pose_config import (
     38     add_metadata,
     39     make_pytorch_test_config,
     40 )
     41 from deeplabcut.pose_estimation_pytorch.modelzoo.utils import load_super_animal_config
     42 from deeplabcut.utils import auxiliaryfunctions

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/__init__.py:11](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/__init__.py#line=10)
      1 #
      2 # DeepLabCut Toolbox (deeplabcut.org)
      3 # © A. & M.W. Mathis Labs
   (...)
      9 # Licensed under GNU Lesser General Public License v3.0
     10 #
---> 11 import deeplabcut.pose_estimation_pytorch.config as config
     12 from deeplabcut.pose_estimation_pytorch.apis import (
     13     VideoIterator,
     14     analyze_image_folder,
   (...)
     32     visualize_predictions,
     33 )
     34 from deeplabcut.pose_estimation_pytorch.config import (
     35     available_detectors,
     36     available_models,
     37     is_model_cond_top_down,
     38     is_model_top_down,
     39 )

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/config/__init__.py:17](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/config/__init__.py#line=16)
      1 #
      2 # DeepLabCut Toolbox (deeplabcut.org)
      3 # © A. & M.W. Mathis Labs
   (...)
     10 #
     11 # For backwards compatibility
     12 from deeplabcut.core.config import (
     13     pretty_print,
     14     read_config_as_dict,
     15     write_config,
     16 )
---> 17 from deeplabcut.pose_estimation_pytorch.config.make_pose_config import (
     18     make_basic_project_config,
     19     make_pytorch_pose_config,
     20     make_pytorch_test_config,
     21 )
     22 from deeplabcut.pose_estimation_pytorch.config.utils import (
     23     available_detectors,
     24     available_models,
   (...)
     28     update_config_by_dotpath,
     29 )

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/config/make_pose_config.py:27](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/config/make_pose_config.py#line=26)
     19 from deeplabcut.core.weight_init import WeightInitialization
     20 from deeplabcut.pose_estimation_pytorch.config.utils import (
     21     get_config_folder_path,
     22     load_backbones,
   (...)
     25     update_config,
     26 )
---> 27 from deeplabcut.pose_estimation_pytorch.runners.inference import InferenceConfig
     28 from deeplabcut.pose_estimation_pytorch.task import Task
     29 from deeplabcut.utils import auxfun_multianimal, auxiliaryfunctions

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/runners/__init__.py:20](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/runners/__init__.py#line=19)
     12 from deeplabcut.pose_estimation_pytorch.runners.base import (
     13     Runner,
     14     attempt_snapshot_load,
   (...)
     17     set_load_weights_only,
     18 )
     19 from deeplabcut.pose_estimation_pytorch.runners.ctd import CTDTrackingConfig
---> 20 from deeplabcut.pose_estimation_pytorch.runners.dynamic_cropping import (
     21     DynamicCropper,
     22     TopDownDynamicCropper,
     23 )
     24 from deeplabcut.pose_estimation_pytorch.runners.inference import (
     25     DetectorInferenceRunner,
     26     InferenceRunner,
     27     PoseInferenceRunner,
     28     build_inference_runner,
     29 )
     30 from deeplabcut.pose_estimation_pytorch.runners.logger import LOGGER

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/runners/dynamic_cropping.py:18](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/deeplabcut/pose_estimation_pytorch/runners/dynamic_cropping.py#line=17)
     15 from typing import Optional
     17 import torch
---> 18 import torchvision.transforms.functional as F
     21 @dataclass
     22 class DynamicCropper:
     23     """If the state is true, then dynamic cropping will be performed. That means that if
     24     an object is detected (i.e. any body part > detection threshold), then object
     25     boundaries are computed according to the smallest[/largest](http://localhost:6504/largest) x position and
   (...)
     56         >>>
     57     """

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/__init__.py:7](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/__init__.py#line=6)
      5 from torchvision import datasets
      6 from torchvision import io
----> 7 from torchvision import models
      8 from torchvision import ops
      9 from torchvision import transforms

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/models/__init__.py:12](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/models/__init__.py#line=11)
     10 from .mnasnet import *
     11 from .shufflenetv2 import *
---> 12 from .efficientnet import *
     13 from .regnet import *
     14 from .vision_transformer import *

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/models/efficientnet.py:8](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/models/efficientnet.py#line=7)
      6 import torch
      7 from torch import nn, Tensor
----> 8 from torchvision.ops import StochasticDepth
     10 from .._internally_replaced_utils import load_state_dict_from_url
     11 from ..ops.misc import ConvNormActivation, SqueezeExcitation

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/ops/__init__.py:25](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/ops/__init__.py#line=24)
     22 from .roi_pool import roi_pool, RoIPool
     23 from .stochastic_depth import stochastic_depth, StochasticDepth
---> 25 _register_custom_op()
     28 __all__ = [
     29     "masks_to_boxes",
     30     "deform_conv2d",
   (...)
     55     "generalized_box_iou_loss",
     56 ]

File [~/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/ops/_register_onnx_ops.py:12](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torchvision/ops/_register_onnx_ops.py#line=11), in _register_custom_op()
     10 from torch.onnx.symbolic_helper import parse_args
     11 from torch.onnx.symbolic_opset11 import select, squeeze, unsqueeze
---> 12 from torch.onnx.symbolic_opset9 import _cast_Long
     14 @parse_args("v", "v", "f")
     15 def symbolic_multi_label_nms(g, boxes, scores, iou_threshold):
     16     boxes = unsqueeze(g, boxes, 0)

ImportError: cannot import name '_cast_Long' from 'torch.onnx.symbolic_opset9' ([/home/rswenson/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torch/onnx/symbolic_opset9.py](http://localhost:6504/miniforge3/envs/spyglass-dlc/lib/python3.10/site-packages/torch/onnx/symbolic_opset9.py))

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions