o
    S=h(                     @   s   d dd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d2ddZ	d3ddZ
dd Zd4dd Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1S )5i3           )ZhumanZmousepigZratc                 C   s   dddd|  iidS )N       query_stringquery)fromsizer    )r   r   r   E/home/cmiss/Jenkins/workspace/SPARC-API-DEV/app/scicrunch_requests.pycreate_query_string   s   r   c                 C      ddd| iiiS )Nr   term
item.curier   )doir   r   r   create_doi_query      r   c                 C      ddd| iidS )N  termsr   r
   r   r   )doisr   r   r   create_multiple_doi_query!      r   c                 C   r   )Nr   r   pennsieve.identifierr   r   )idsr   r   r    create_multiple_discoverId_query,   r   r   c                 C   s^   |  d}g }|D ]}|ddd |D  q	dd |D }ddd	d
gd|didS )N  c                 s   s    | ]	}|  r|V  qd S N)isalnum).0er   r   r   	<genexpr>;   s    z%create_title_query.<locals>.<genexpr>c                 S   s   g | ]
}|rd | d qS )()r   )r"   pr   r   r   
<listcomp>=   s    z&create_title_query.<locals>.<listcomp>
   r   r   z	item.name AND fieldsr   r
   r	   r   )splitappendjoin)titlepartsZalphanum_partsr'   r   r   r   r   create_title_query7   s   
r3   c                 C   s   ddddd| iiig ddS )N   r   matchr   r   )Zanatomyr   Z	organisms)r
   r	   r   _sourcer   
identifierr   r   r   create_anatomy_queryL   s   r9   c                 C   s0   |  d}d|d  }ddddg|did	S )
N:*r4   r)   r   r   z*identifierr+   r-   )r.   )r8   r2   r   r   r   r   create_identifier_query_   s   
r<   c                 C   r   )Nr   r   zpennsieve.identifier.aggregater   r7   r   r   r   !create_pennsieve_identifier_queryq   r   r=   r)   r   c                 C   s   ||d| g|didS )Nr   r+   r-   r   )fieldZsearch_termr
   from_r   r   r   create_field_query{   s   r@   iric                 C   s(   dddddd| d| iiigiidS )	Nr)   r   boolmustZmatch_phrasezexisting_ids.r   r-   r   )r   Zexisting_id_typer   r   r   create_onto_term_query   s   rD   c                 C   s   ddd|  iiiS )Nr   r   idr   )rE   r   r   r   create_citations_query   s   rF     c              	   C   s.   dddd| ddddiiigddid	iid
S )Nr   r   	compositecurier   r>   zitem.curie.aggregater   )r
   sourcesafterr	   r
   aggregationsr   )r
   r   r   r   create_doi_aggregate   s   rN   c                 C   s&   dddi igg dd| iidii}|S )Nr   rB   	match_allitemrI   )rC   Zshouldfilterr   )r   r   r   r   r   create_doi_request   s   rR   c                 C   s    dddgd|  ddii}|S )Nr   r   z*mimetype.name"r+   r   )Zmimetype_queryr   r   r   r   create_multiple_mimetype_query   s   

rT   c              	   C   s4   dd|  dddddiddigd	iid
}t  |fS )Nr   r   r      _countdesc_keyasc)r>   r
   orderrL   )get_facet_type_map)type_datar   r   r   create_facet_query   s    
r^   c                 C   sf   |d u rd}|d u rd}| s|s|s||dS ||dddiid}t | ||t }||d d d< |S )Nr)   r   )r
   r	   r   r   r   r-   )facet_query_stringr[   )r   r   facetsr
   startr]   qsr   r   r   create_filter_request   s    

rc   c                 C   s   | r
t |  d S d S r    )BODY_SCAFFOLD_DATASETgetlower)speciesr   r   r   get_body_scaffold_dataset_id  s   rh   c                   C   s:   g dg ddgdgdgdgdgdgdgdgdgdgdS )N)z(organisms.primary.species.name.aggregatez'organisms.sample.species.name.aggregatez)organisms.scaffold.species.name.aggregatezattributes.subject.sex.valuezanatomy.organ.name.aggregatezitem.modalities.keywordz$attributes.subject.ageCategory.value)rg   ZSpeciesZgenderZGendersexZSexZgenotypezAnatomical structureorganZOrganzExperimental approachzAge categoriesr   r   r   r   r   r[     s   r[   c                 C   s  i }t |D ]6\}}|d u s$|| d u s$d||  v s$d||  v r%q|| vr3|| g||< q|| ||  qd}| dkrId|  d}| dkrWt|dkrW|d7 }|D ]}|dkr|sgt|d	kont|| d	k}	|	ru|d7 }|| D ]}
|
d
kr|d7 }|
|| d ur|d7 }qy|	r|d7 }nA|d7 }|| D ]4}||d 7 }|| D ]}
|d|
 d7 }|
|| d ur|d7 }q|d7 }q||| d ur|d7 }q|d7 }|t| d ur|d7 }qY|S )Nshowallr   r%   r&   r   r*   datasetsr4   Z	scaffoldszOobjects.additional_mimetype.name:(application%2fx.vnd.abi.scaffold.meta%2Bjson) OR z:()	enumeraterf   keysr/   lenlist)r   r   r`   type_maptir   ZqtkZneedParentheseslmr   r   r   r_   +  sT   4 

r_   c                 C   s   dddddddddiid	}t | dkr@d
ddgii}d}| D ]}|| d kr-|d7 }|d| d7 }q!||d
 d< ||d< |S )Nr   Znames_and_curiesr   Zpainlesszdef a=null;if(params['_source']['anatomy'] != null ) { if(params['_source']['anatomy']['organ'] != null ) { a = params['_source']['anatomy']['organ'];}} return a;)langinlinerU   )scriptr
   rL   r   r,   z*species.namer   ro   r%   r&   r   )rr   )rg   bodyr   r   rP   r   r   r   create_request_body_for_curiesc  s6   r~   N)r)   r   )rA   )rG   )rd   r   r   r   r   r3   r9   r<   r=   r@   rD   rF   rN   rR   rT   r^   rc   rh   r[   r_   r~   r   r   r   r   <module>   s2   




	8