o
    piH	                     @   s<   d dl Z d dlZddlmZ ddlmZ G dd deZdS )    N   )BaseDataset)_urlretrievec                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	Cars196z^https://www.kaggle.com/api/v1/datasets/download/jutrera/stanford-car-dataset-by-classes-folderc                 C   s   | j dkrttdd}n| j dkrttdd}nttdd}ttj| jdd}dd	 | D }W d    n1 s@w   Y  | j	tj| jd
|dd\}}| j	tj| jd|dd\}}|| }|| }	g g | _
| _t||	D ]\}
}||v r| j
|
 | j| qyd S )Ntrain   c   test   z	names.csvrc                 S   s   g | ]}|  qS  )strip).0xr   r   \/home/ubuntu/.local/lib/python3.10/site-packages/pytorch_metric_learning/datasets/cars196.py
<listcomp>   s    z*Cars196.generate_split.<locals>.<listcomp>zanno_train.csv)splitzanno_test.csv)r   setrangeopenospathjoinroot	readlines	_load_csvpathslabelszipappend)selfclassesfnamespaths_trainlabels_train
paths_testlabels_testr   r   plr   r   r   generate_split   s.   



zCars196.generate_splitc                 C   s   g g }}t |d=}|D ]/}|d}|d }	|d }
|tj| jdd||t|
d  dd|	 |t|
 qW d    ||fS 1 sJw   Y  ||fS )	Nr   ,r   car_datar   /-)	r   r   r   r   r   r   r   intreplace)r    r   r#   r   	all_paths
all_labelsr"   r)   
path_annos	curr_path
curr_labelr   r   r   r   '   s,   



zCars196._load_csvc                 C   s   t j| jdd t j| jtjdd }ttj|d t	
|d}|| j W d    n1 s4w   Y  t | d S )NT)exist_okr.   r,   )urlfilenamer   )r   makedirsr   r   r   r   DOWNLOAD_URLr   r   zipfileZipFile
extractallremove)r    download_folder_pathzip_refr   r   r   download_and_remove;   s   zCars196.download_and_removeN)__name__
__module____qualname__r;   r*   r   rB   r   r   r   r   r      s
    r   )r   r<   datasets.base_datasetr   utils.common_functionsr   r   r   r   r   r   <module>   s
    