o
    RŀgYN                     @   sb   d Z ddlZddlmZ ddlmZ ddlmZ G dd deZedkr/dd	lm	Z	 e	  dS dS )
zBCommand line wrapper for the multiple alignment program Clustal W.    N)_Option)_Switch)AbstractCommandlinec                   @   s   e Zd ZdZdddZdS )ClustalwCommandlineaS  Command line wrapper for clustalw (version one or two).

    http://www.clustal.org/

    Notes
    -----
    Last checked against versions: 1.83 and 2.1

    References
    ----------
    Larkin MA, Blackshields G, Brown NP, Chenna R, McGettigan PA,
    McWilliam H, Valentin F, Wallace IM, Wilm A, Lopez R, Thompson JD,
    Gibson TJ, Higgins DG. (2007). Clustal W and Clustal X version 2.0.
    Bioinformatics, 23, 2947-2948.

    Examples
    --------
    >>> from Bio.Align.Applications import ClustalwCommandline
    >>> in_file = "unaligned.fasta"
    >>> clustalw_cline = ClustalwCommandline("clustalw2", infile=in_file)
    >>> print(clustalw_cline)
    clustalw2 -infile=unaligned.fasta

    You would typically run the command line with clustalw_cline() or via
    the Python subprocess module, as described in the Biopython tutorial.

    clustalwc                 K   s  g t g ddddt g ddddt g ddddtg dd	tg d
dtg ddtg ddtg ddtg ddtg ddt g dddd dtg ddtg ddt g ddd d dtg d!d"t g d#d$ddt g d%d&d'd dt g d(d)d*d dt g d+d,d-d dt g d.d/d0d dt g d1d2d3d dt g d4d5t g d6d7d8d dtg d9d:t g d;d<ddt g d=d>d?d dt g d@dAdBd dt g dCdDdEd dt g dFdGdHd dt g dIdJdKd dt g dLdMdNd ddOt g dPdQdRd ddOt g dSdTdUd dt g dVdWdXd dt g dYdZddt g d[d\d]d ddOt g d^dMd_d ddOt g d`dQdad ddOt g dbdTdcd dt g dddWded dtg dfdgt g dhdidjd dtg dkdltg dmdntg dodpt g dqdrdsd dt g dtdudvd dt g dwdxdyd dt g dzd{d|d dtg d}d~tg ddt g ddddt g ddddt g dddd ddOt g dddd ddOtg ddtg ddtg ddt g dddd dt g dddd dt g dddd dt g dddd dt g dddd dt g dddd dt g dddd dt g dddd dt g dddd dt g dddd dt g dddd dtg ddtg ddt g dddd dt g dddd d| _tj| |fi | dS )zInitialize the class.)z-infilez-INFILEINFILEinfilezInput sequences.T)filename)z	-profile1z	-PROFILE1PROFILE1profile1zProfiles (old alignment).)z	-profile2z	-PROFILE2PROFILE2profile2)z-optionsz-OPTIONSOPTIONSoptionsz List the command line parameters)z-helpz-HELPHELPhelpz Outline the command line params.)z-checkz-CHECKCHECKcheck)z	-fullhelpz	-FULLHELPFULLHELPfullhelpzOutput full help content.)z-alignz-ALIGNALIGNalignzDo full multiple alignment.)z-treez-TREETREEtreezCalculate NJ tree.)z-pimz-PIMPIMpimz<Output percent identity matrix (while calculating the tree).)z
-bootstrapz
-BOOTSTRAP	BOOTSTRAP	bootstrapz;Bootstrap a NJ tree (n= number of bootstraps; def. = 1000).c                 S   
   t | tS N
isinstanceintx r%   T/var/www/html/myenv/lib/python3.10/site-packages/Bio/Align/Applications/_Clustalw.py<lambda>[      
 z.ClustalwCommandline.__init__.<locals>.<lambda>)checker_function)z-convertz-CONVERTCONVERTconvertz6Output the input sequences in a different file format.)z
-quicktreez
-QUICKTREE	QUICKTREE	quicktreez/Use FAST algorithm for the alignment guide tree)z-typez-TYPETYPEtypezPROTEIN or DNA sequencesc                 S      | dv S )N)PROTEINDNAproteindnar%   r#   r%   r%   r&   r'   q       )z	-negativez	-NEGATIVENEGATIVEnegativez0Protein alignment with negative values in matrix)z-outfilez-OUTFILEOUTFILEoutfilez#Output sequence alignment file name)z-outputz-OUTPUTOUTPUToutputzGOutput format: CLUSTAL(default), GCG, GDE, PHYLIP, PIR, NEXUS and FASTAc                 S   r0   )N)CLUSTALGCGGDEPHYLIPPIRNEXUSFASTAclustalgcggdephylippirnexusfastar%   r#   r%   r%   r&   r'          )z	-outorderz	-OUTORDEROUTORDERoutorderz$Output taxon order: INPUT or ALIGNEDc                 S   r0   )N)INPUTinputALIGNEDalignedr%   r#   r%   r%   r&   r'      rJ   )z-casez-CASECASEcasez$LOWER or UPPER (for GDE output only)c                 S   r0   )N)UPPERupperLOWERlowerr%   r#   r%   r%   r&   r'      r5   )z-seqnosz-SEQNOSSEQNOSseqnosz#OFF or ON (for Clustal output only)c                 S   r0   N)ONonOFFoffr%   r#   r%   r%   r&   r'      r5   )z-seqno_rangez-SEQNO_RANGESEQNO_RANGEseqno_rangez'OFF or ON (NEW- for all output formats)c                 S   r0   rY   r%   r#   r%   r%   r&   r'      r5   )z-rangez-RANGERANGErangezGSequence range to write starting m to m+n. Input as string eg. '24,200')z
-maxseqlenz
-MAXSEQLEN	MAXSEQLEN	maxseqlenz%Maximum allowed input sequence lengthc                 S   r   r   r    r#   r%   r%   r&   r'      r(   )z-quietz-QUIETQUIETquietz Reduce console output to minimum)z-statsz-STATSSTATSstatsz%Log some alignment statistics to file)z-ktuplez-KTUPLEKTUPLEktuplez	Word sizec                 S      t | ttfS r   r!   floatr"   r#   r%   r%   r&   r'          )z	-topdiagsz	-TOPDIAGSTOPDIAGStopdiagszNumber of best diags.c                 S   rj   r   rk   r#   r%   r%   r&   r'      rm   )z-windowz-WINDOWWINDOWwindowzWindow around best diags.c                 S   rj   r   rk   r#   r%   r%   r&   r'      rm   )z-pairgapz-PAIRGAPPAIRGAPpairgapzGap penaltyc                 S   rj   r   rk   r#   r%   r%   r&   r'      rm   )z-scorez-SCORESCOREscorezEither: PERCENT or ABSOLUTEc                 S   r0   )N)percentPERCENTabsoluteABSOLUTEr%   r#   r%   r%   r&   r'      rJ   )z	-pwmatrixz	-PWMATRIXPWMATRIXpwmatrixz9Protein weight matrix=BLOSUM, PAM, GONNET, ID or filenamec                 S      | dv p	t j| S N)BLOSUMPAMGONNETIDblosumpamgonnetidospathexistsr#   r%   r%   r&   r'         )r)   r	   )z-pwdnamatrixz-PWDNAMATRIXPWDNAMATRIXpwdnamatrixz+DNA weight matrix=IUB, CLUSTALW or filenamec                 S   r|   N)IUBCLUSTALWiubr   r   r#   r%   r%   r&   r'         )z
-pwgapopenz
-PWGAPOPEN	PWGAPOPEN	pwgapopenzGap opening penaltyc                 S   rj   r   rk   r#   r%   r%   r&   r'      rm   )z	-pwgapextz	-PWGAPEXTPWGAPEXTpwgapextzGap extension penaltyc                 S   rj   r   rk   r#   r%   r%   r&   r'      rm   )z-newtreez-NEWTREENEWTREEnewtreez-Output file name for newly created guide tree)z-usetreez-USETREEUSETREEusetreezFile name of guide treec                 S      t jjS r   r   r#   r%   r%   r&   r'     r5   )z-matrixz-MATRIXMATRIXmatrixc                 S   r|   r}   r   r#   r%   r%   r&   r'   	  r   )z
-dnamatrixz
-DNAMATRIX	DNAMATRIX	dnamatrixc                 S   r|   r   r   r#   r%   r%   r&   r'     r   )z-gapopenz-GAPOPENGAPOPENgapopenc                 S   rj   r   rk   r#   r%   r%   r&   r'   $  rm   )z-gapextz-GAPEXTGAPEXTgapextc                 S   rj   r   rk   r#   r%   r%   r&   r'   )  rm   )z-endgapsz-ENDGAPSENDGAPSendgapszNo end gap separation pen.)z-gapdistz-GAPDISTGAPDISTgapdistzGap separation pen. rangec                 S   rj   r   rk   r#   r%   r%   r&   r'   2  rm   )z-nopgapz-NOPGAPNOPGAPnopgapzResidue-specific gaps off)z-nohgapz-NOHGAPNOHGAPnohgapzHydrophilic gaps off)z-hgapresiduesz-HGAPRESIDUESHGAPRESIDUEShgapresidueszList hydrophilic res.)z-maxdivz-MAXDIVMAXDIVmaxdivz% ident. for delayc                 S   rj   r   rk   r#   r%   r%   r&   r'   ?  rm   )z-transweightz-TRANSWEIGHTTRANSWEIGHTtransweightzTransitions weightingc                 S   rj   r   rk   r#   r%   r%   r&   r'   J  rm   )z
-iterationz
-ITERATION	ITERATION	iterationzNONE or TREE or ALIGNMENTc                 S   r0   )N)NONEr   	ALIGNMENTnoner   	alignmentr%   r#   r%   r%   r&   r'   O  rJ   )z-numiterz-NUMITERNUMITERnumiterz'maximum number of iterations to performc                 S   r   r   r    r#   r%   r%   r&   r'   U  r(   )z
-noweightsz
-NOWEIGHTS	NOWEIGHTS	noweightszDisable sequence weighting)z-profilez-PROFILEPROFILEprofilez)Merge two alignments by profile alignment)z	-newtree1z	-NEWTREE1NEWTREE1newtree1z/Output file name for new guide tree of profile1)z	-newtree2z	-NEWTREE2NEWTREE2newtree2z*Output file for new guide tree of profile2)z	-usetree1z	-USETREE1USETREE1usetree1z$File name of guide tree for profile1c                 S   r   r   r   r#   r%   r%   r&   r'   m  r5   )z	-usetree2z	-USETREE2USETREE2usetree2z$File name of guide tree for profile2c                 S   r   r   r   r#   r%   r%   r&   r'   s  r5   )z
-sequencesz
-SEQUENCES	SEQUENCES	sequencesz9Sequentially add profile2 sequences to profile1 alignment)z
-nosecstr1z
-NOSECSTR1	NOSECSTR1	nosecstr1z=Do not use secondary structure-gap penalty mask for profile 1)z
-nosecstr2z
-NOSECSTR2	NOSECSTR2	nosecstr2z=Do not use secondary structure-gap penalty mask for profile 2)z
-secstroutz
-SECSTROUT	SECSTROUT	secstroutz:STRUCTURE or MASK or BOTH or NONE output in alignment filec                 S   r0   )N)	STRUCTUREMASKBOTHr   	structuremaskbothr   r%   r#   r%   r%   r&   r'     rJ   )z	-helixgapz	-HELIXGAPHELIXGAPhelixgapz#Gap penalty for helix core residuesc                 S   rj   r   rk   r#   r%   r%   r&   r'     rm   )z
-strandgapz
-STRANDGAP	STRANDGAP	strandgapz$gap penalty for strand core residuesc                 S   rj   r   rk   r#   r%   r%   r&   r'     rm   )z-loopgapz-LOOPGAPLOOPGAPloopgapzGap penalty for loop regionsc                 S   rj   r   rk   r#   r%   r%   r&   r'     rm   )z-terminalgapz-TERMINALGAPTERMINALGAPterminalgapz!Gap penalty for structure terminic                 S   rj   r   rk   r#   r%   r%   r&   r'     rm   )z-helixendinz-HELIXENDIN
HELIXENDIN
helixendinz9Number of residues inside helix to be treated as terminalc                 S   r   r   r    r#   r%   r%   r&   r'     r(   )z-helixendoutz-HELIXENDOUTHELIXENDOUThelixendoutz:Number of residues outside helix to be treated as terminalc                 S   r   r   r    r#   r%   r%   r&   r'     r(   )z-strandendinz-STRANDENDINSTRANDENDINstrandendinz:Number of residues inside strand to be treated as terminalc                 S   r   r   r    r#   r%   r%   r&   r'     r(   )z-strandendoutz-STRANDENDOUTSTRANDENDOUTstrandendoutz;Number of residues outside strand to be treated as terminalc                 S   r   r   r    r#   r%   r%   r&   r'     r(   )z-outputtreez-OUTPUTTREE
OUTPUTTREE
outputtreeznj OR phylip OR dist OR nexusc                 S   r0   )N)NJr?   DISTrA   njrF   distrH   r%   r#   r%   r%   r&   r'     rJ   )z-seedz-SEEDSEEDseedzSeed number for bootstraps.c                 S   r   r   r    r#   r%   r%   r&   r'     r(   )z-kimuraz-KIMURAKIMURAkimurazUse Kimura's correction.)z	-tossgapsz	-TOSSGAPSTOSSGAPStossgapszIgnore positions with gaps.)z-bootlabelsz-BOOTLABELS
BOOTLABELS
bootlabelsz;Node OR branch position of bootstrap values in tree displayc                 S   r0   )N)NODEBRANCHnodebranchr%   r#   r%   r%   r&   r'     r5   )z-clusteringz-CLUSTERING
CLUSTERING
clusteringzNJ or UPGMAc                 S   r0   )N)r   UPGMAr   upgmar%   r#   r%   r%   r&   r'     r5   N)r   r   
parametersr   __init__)selfcmdkwargsr%   r%   r&   r   .   s   #$(-:>CGLaglqv{               &  9  A  F  L  Q  W  j  r  w  |           	    
                $    )    .    2    7    <    B    I    W    [    _    n    s    x    }                                         #      &      *      /      5zClustalwCommandline.__init__N)r   )__name__
__module____qualname____doc__r   r%   r%   r%   r&   r      s    r   __main__)run_doctest)
r  r   Bio.Applicationr   r   r   r   r   
Bio._utilsr  r%   r%   r%   r&   <module>   s      X
