B
    3Rc              
   @   s  d Z ddlZddlZddlZddlmZ ddlmZmZ e	e
ZdddgZG dd	 d	ejZd
d Zdd Zdd Zdd Ze
dkreddZejddZeddZejdddedejd ejddd ed! ejd"d#d$d%d& ejd'd(d)ed*ejd+d, ejd-d.egd/Zejd0d1d2ed! ejed3 ejd4d5egd/Zejed3 e Z ye !e  W nL e"k
r Z# z,ej$%d6& e#j'  e(  e)d7 W ddZ#[#X Y nX dS )8z
molvs.cli
~~~~~~~~~

This module contains a command line interface for standardization.

:copyright: Copyright 2016 by Matt Swain.
:license: MIT, see LICENSE file for more details.

*Adapted for purposes of integration of MolVS into RDKit
    N)Chem)Standardizer	Validatorsmimolsdfc               @   s   e Zd Zdd ZdS )MolvsParserc             C   s*   t jd |  |   t d d S )NzError: %s

   )sysstderrwriteencode
print_helpexit)selfmessage r   &share/RDKit/Contrib/MolVS/molvs_cli.pyerror   s    zMolvsParser.errorN)__name__
__module____qualname__r   r   r   r   r   r      s   r   c             C   s   | j rt| j S | jdks8| jjds8| jjdrHt| j S | jdksn| jjdsn| jjdr~t| j S t| j S d S )N>   r   smilesr   r   >   r   r   r   r   )	r   r   ZMolFromSmilesZintypeinfilenameendswithreadZMolFromMolBlock)argsr   r   r   	_read_mol#   s    &&r   c             C   s   |j dks&|jjds&|jjdrF|jt|  |jd nX|j dksl|jjdsl|jjdr|jt|  n|jt|  |jd d S )N>   r   r   r   r   
>   r   r   r   r   )Zouttypeoutfiler   r   r   r   ZMolToSmilesZMolToMolBlock)r   r   r   r   r   
_write_mol.   s    &&r!   c             C   s&   t | }t }||}t||  d S )N)r   r   standardizer!   )r   r   sr   r   r   standardize_main9   s    
r$   c             C   sB   t | }t }||}x$|D ]}| j| | jd qW d S )Nr   )r   r   validater    r   )r   r   vZlogslogr   r   r   validate_main@   s    

r(   __main__z4usage: python cli.py [-h] {standardize,validate} ...)ZusagezAvailable commands)titleF)Zadd_helpr   ?zinput filenamer)nargshelptypedefaultz-iz--intypezinput filetype)r.   choicesz-:z--smileszinput SMILES instead of filez<smiles>)r.   metavarz-Oz	--outfilezoutput filenamewz	<outfile>)r.   r/   r0   r2   r"   zstandardize a molecule)r.   parentsz-oz	--outtypezoutput filetype)funcr%   zvalidate a moleculezError: %s

r	   )*__doc__argparseZloggingr
   Zrdkitr   Zrdkit.Chem.MolStandardizer   r   Z	getLoggerr   r'   Z	FILETYPESArgumentParserr   r   r!   r$   r(   parserZadd_subparsersZ
subparsersZcommon_parseradd_argumentZFileTypestdinstdoutZ
add_parserZstandardize_parserZset_defaultsZvalidate_parser
parse_argsr   r5   	Exceptioner   r   r   r   r   r   r   r   r   r   <module>   s@   

	


