2017-09-23 5 views
0

Ich versuche, das folgende Skript zu verwenden codeml zu automatisieren Käks Werte für 1500 Orthologe aber ich erhalte diesen FehlerWas mache ich falsch beim Ausführen dieses Shell-Skripts?

#!/bin/bash 

for FILE in *.aln 
do 
NAME=`echo $FILE | sed 's/\.aln//'` 

python codemlScript.py /home/tulasi/Desktop/Tools/Tools/AutoPAML/Alignments/\.aln /home/tulasi/Desktop/Tools/Tools/AutoPAML/Trees/\.tree /home/tulasi/Desktop/Tools/Tools/AutoPAML/Out/\.out 

done 

Ich habe diese Pythonscript nach Tun codeml von GitHub zu berechnen.

Wenn ich dieses Skript ich diesen Fehler bekam

/home/tulasi/Desktop/Tools/Tools/AutoPAML/Alignments/.aln 
/home/tulasi/Desktop/Tools/Tools/AutoPAML/Alignments/.aln 
/home/tulasomega.out 
Traceback (most recent call last): 
File "codemlScript.py", line 45, in <module> 
results1 = cml.run(verbose=True) 
    File "/usr/local/lib/python2.7/dist-packages/Bio/Phylo/PAML/codeml.py",  line 185, in run 
raise IOError("The specified tree file does not exist.") 
IOError: The specified tree file does not exist. 

Hier wird das Python-Skript Ich verwende

#!/usr/bin/python 

    ######################################################################################################################### 
#This script was written by Nathan Whelan. 

# THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
# THE CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 
# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE 
# SOFTWARE. 
########################################################################################################################## 

##This script utilizes codeml in PAML by Ziheng Yang. If you use this script please also cite PAML. 

##BIOPYTHON IS REQUIRED FOR THIS SCRIPT! 


##This script can be used to automate running the codeml PAML package(e.g. if you have hundreds of genes you want to fit to a model). 
#A codeml ctl file should be in your working directory with the parameters you wish to use. 

from __future__ import division 
from Bio.Phylo.PAML import codeml ##Biopython PAML 
import sys 

#This program takes three inputs: the alignment in phylip format, a treefile in Newick format, and outputfile name 
#It returns a nested dictionary with various results depending on analysis 
if len(sys.argv) != 4: 
    print "Error. There should be three inputs. An alignment in pyhlip format, a tree file, and the name for the output file" 
    quit() 

cml = codeml.Codeml() 
cml.read_ctl_file("codeml.ctl") ##CTL File. See PAML manual for format. 
cml.alignment = sys.argv[1] 
cml.tree = sys.argv[2] 
cml.out_file = sys.argv[3] 

name=sys.argv[1] 
print name 
name=sys.argv[1] 
print name 
name2=name[0:11]+"_omega.out" 
print name2 
results1 = cml.run(verbose=True) 

Aber wenn ich Python-Skript laufen zusammen mit einzelnen Ausrichtung und Baum Ich erhalte Ergebnis. Daraus habe ich verstanden, dass es ein Problem mit Shell-Skript gibt, aber nicht mit Python-Skript

Ich würde gerne wissen, wo ich falsch liege. Oder schlagen Sie bitte ein Shell-Skript vor, das dieses Python-Skript ergänzt.

Danke

Antwort

0

überarbeitete Antwort nimmt zwei Eingabedateien im Zielverzeichnis vorhanden ist, wie foo.aln und foo.tree, und auch, dass die Berechtigung existiert eine Ausgabedatei zu erstellen, wie foo.out.

for FILE in /home/tulasi/Desktop/Tools/Tools/AutoPAML/Alignments/*.aln 
do 
    NAME="${FILE%.*}" 
    python codemlScript.py "$NAME.aln" "$NAME.tree" "$NAME.out" 
done 
+0

Ja sicher .. Ich werde n versuchen lassen u wissen –

+0

ich mit Ihrem Vorschlag versucht, und ich habe denselben Fehler –

+0

Hast du alle Dateien von Github richtig? Meldet sich jemand auf Google-Suche über das gleiche? –