o
    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d4ddZ	d5ddZ
dd Zd6d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d4d1d2Zd3S )7i3           )ZhumanZmousepigZratc                 C   s   dddd|  iidS )N       query_stringquery)fromsizer    )r   r   r   A/home/cmiss/Jenkins/workspace/SPARC-API/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   	item.name AND fieldsr   r
   r	   r   )splitappendjoin)titlepartsZalphanum_partsr'   r   r   r   r   create_title_query7   s   
r4   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   r;   c                 C   s0   |  d}d|d  }ddddg|did	S )
N:*r5   r)   r   r   z*identifierr,   r.   )r/   )r:   r3   r   r   r   r   create_identifier_query_   s   
r>   c                 C   r   )Nr   r   zpennsieve.identifier.aggregater   r9   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   rB   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   rF   c                 C   s   ddd|  iiiS )Nr   r   idr   )rG   r   r   r   create_citations_query   s   rH     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   rP   c                 C   s&   dddi igg dd| iidii}|S )Nr   rD   	match_allitemrK   )rE   Zshouldfilterr   )r   r   r   r   r   create_doi_request   s   rT   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   

rV   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
   orderrN   )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    

re   c                 C   s   | r
t |  d S d S r    )BODY_SCAFFOLD_DATASETgetlower)speciesr   r   r   get_body_scaffold_dataset_id  s   rj   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)ri   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+   datasetsr5   Z	scaffoldszOobjects.additional_mimetype.name:(application%2fx.vnd.abi.scaffold.meta%2Bjson) OR z:()	enumeraterh   keysr0   lenlist)r   r   rb   type_maptir   ZqtkZneedParentheseslmr   r   r   ra   +  sT   4 

ra   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inlinerW   )scriptr
   rN   r   r-   z*species.namer   rq   r%   r&   r   )rt   )ri   bodyr   r   rR   r   r   r   create_request_body_for_curiesc  s6   r   c                 C   s    ||dd| ddiig ddS )z
    Create a flatmap query for a dataset given the dataset id.
    The dataset id is a Pennsieve dataset id, for example
        N:dataset:2a3d01c0-39d3-464a-8746-54c9d67ebe0f
    r6   item.identifierand)r   operator)r   r*   r   zobjects.dataset.pathz%objects.associated_flatmap.identifierr7   r   )
dataset_idr
   rA   r   r   r   create_dataset_flatmap_query  s   r   N)r)   r   )rC   )rI   )rf   r   r   r   r   r4   r;   r>   r?   rB   rF   rH   rP   rT   rV   r`   re   rj   r]   ra   r   r   r   r   r   r   <module>   s4   



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