o
    S=h/#                     @   s   d dl Z d dlZd dlmZ d dlmZ dd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )     N)jsonifySKIPPED_OBJ_ATTRIBUTESc                 C   s   | d d d S )NX )versionr   r   L/home/cmiss/Jenkins/workspace/SPARC-API-DEV/app/scicrunch_process_results.py_convert_patch_to_x   s   r
   c              	   C   s  g }| d d }t |D ]\}}z|d d d d }t|}W n ty+   d}Y nw d|dd	 }td
| }t|d}t|d}	t||}
t|
d |
d< | d |
d< d|d 	 v rpdd |d d D |
d< ng |
d< z|d d d d |
d< W n ty   d|
d< Y nw z|d d d |
d< W n ty   d|
d< Y nw t
|
d  |
|	|
d  |
d= ||
 q|S )Nhits_sourceitemr   keyword	undefinedscicrunch_processing_v_._app.ZATTRIBUTES_MAPsort_files_by_mime_typedoiZtookobjectsc                 S   s6   g | ]}d |v r|d  d  ddkr|d d qS )Zadditional_mimetypenamezabi.context-informationr   datasetpath)find).0filer   r   r	   
<listcomp>$   s    
z$_prepare_results.<locals>.<listcomp>zabi-contextual-informationreadmedescription r   titlefiles)	enumerater
   KeyErrorreplace	importlibimport_modulegetattr_transform_attributes_convert_doi_to_urlkeys _remove_unused_files_informationupdateappend)resultsoutputr   ihitr   package_versionmZattributes_mapr   attrr   r   r	   _prepare_results   sH   



r6   c                 C   s.   | sd S | D ]}t D ]	}||v r||= q
qd S )Nr   )Zobj_listobjkeyr   r   r	   r,   A   s   r,   c                 C   s   t | d d t| dS )Nr   total)ZnumberOfHitsr/   )r   r6   )r/   r   r   r	   process_resultsK   s   r:   c              	   C   s   t | } | D ]Q}d|v rWt|d dkrWz7|d d d d }d}t|d dkr3|d d d d }|d }|d }|d	 }t|||||d
W   S  tyV   Y  d S w qd S )Nzabi-scaffold-metadata-filer   r   r   r    zabi-context-fileZdataset_identifierZdataset_versions3uri)r   idr   r;   Zcontextinfo)r6   lenr   r$   )r/   resultr   Zcontext_infor<   r   r;   r   r   r	   process_get_first_scaffold_infoP   s"   r?   c                 C   s8   g }| d d }t |D ]\}}||d  qd|iS )Nr   r   r>   )r#   r.   )r/   processed_outputsr   r1   r2   r   r   r	   reform_anatomy_resultse   s
   rA   c              	   C   s   g }t | }|D ]5}z
|d }t|}W n ty   d}Y nw d|dd }td| }t|d}||| qd|iS )	Nr   r   r   r   r   r   process_resultr>   )r6   r
   r$   r%   r&   r'   r(   r.   )r/   r@   Z
kb_resultsZ	kb_resultr   r3   r4   rB   r   r   r	   reform_dataset_resultsn   s   
rC   c                 C   s   g }d| v r
| d }|S )Naggregationsr   )r/   Zprocessed_resultsr   r   r	   reform_aggregation_results   s   rE   c                 C   s   | s| S |  ddS )NzDOI:zhttps://doi.org/)r%   )r   r   r   r	   r*      s   r*   c           	      C   sr   i }|   D ]0\}}|d }d}t|D ]\}}t|tr1|| v r1|| }|d t|u r1|}q|||< q|S )Nr   F   )itemsr#   
isinstancedictr+   r=   )	Zattributes_r   Z
found_attrkr5   subsetZkey_attrnr8   r   r   r	   r)      s   

r)   c                 C   sr   d| v r7d| v r7| d D ]*}|d d }t | d|}d }d| v r&t | d|}|d ur.||d< |d ur6||d< q| S )N	scaffoldszabi-scaffold-filer   r<   zabi-scaffold-thumbnailZ	meta_file	thumbnail)_extract_dataset_path_remote_id)r0   scaffoldid_Zscaffold_meta_fileZscaffold_thumbnailr   r   r	   _manipulate_attr   s   rR   c                 C   sR   d }| | D ] }|d d |kr&d}d|v r|d }|d d |d} |S q|S )Nr   r<   r    
identifierr   )r   	remote_idr   )datar8   rQ   Zextracted_dataZdataset_path_remote_idrT   r   r   r	   rO      s   
rO   c           
   	   C   s   ddg ii}i }| d d d D ];}z0d}d}t ||d }|r&|d	}d
}d}t ||d }|r9|d	}|rA|rA|||< W q tyK   Y qw |D ]}||| d}	|d d |	 qN|S )NuberonarrayrD   names_and_curiesbucketszcurie=(.*?),r    r8   rF   zname=(.*?),r<   r   )researchgroupr$   r.   )
rU   r>   id_name_mapr   patterncuriematchr   r8   pairr   r   r	   reform_curies_results   s:   

rc   c                 C   s   ddg ii}i }d| v r| d D ]
}|d ||d < qnt d| v r?| d D ]}|d ||d  d}|d d | q&|S t )	NrV   rW   nodesZlblr<   edgesr7   rZ   )BaseExceptionr.   )rU   r>   r^   r   rb   r   r   r	   reform_related_terms   s$   
rg   )r&   r[   flaskr   Zapp.scicrunch_processing_commonr   r
   r6   r,   r:   r?   rA   rC   rE   r*   r)   rR   rO   rc   rg   r   r   r   r	   <module>   s$    4
	)