私は以前、このコードを使い始めようとして、この質問をしました: コマンド ライン パラメータは 2 または 3 パラメータを取る必要があります
-s: これはオプションのパラメーターまたはスイッチであり、ユーザーがスプライシングされた遺伝子配列 (イントロンが除去されている) を望んでいることを示します。ユーザーはこれを提供する必要はありません (つまり、遺伝子配列全体が必要です)。提供する場合は、最初のパラメーターにする必要があります。
入力ファイル (遺伝子を含む)
出力ファイル (プログラムが fasta ファイルを保存するために作成する場所)
ファイルには次のような行が含まれています。
NM_001003443 chr11 + 5925152 592608098 2 5925152,5925652, 5925404,5926898,
次に、入力されたすべてが正しいことを確認するために複数の条件を作成する必要がありました。そうしないと、プログラムが終了してしまいます。
- ユーザーは、.genes で終わらない入力ファイル名を指定します
- ユーザーは、.fa または .fasta で終わらない出力名を指定します。
- ユーザーが 2 つ未満または 3 つを超えるパラメーターを指定した場合
- ユーザーの最初のパラメーターはダッシュで始まりますが、「-s」ではありません
入力ファイルが次のいずれかに違反しています:
- 最初の行は「#」記号で開始する必要があります
- 各行にはちょうど 10 列 (列は 1 つ以上のスペースで区切られている) が必要です。
- 列 2 (0 から数えて) は、+ または - 記号のいずれかである必要があります
- 列 8 は、タブで区切られた整数のリストである必要があります
- 列 9 は、列 8 とまったく同じ整数を持つ、タブで区切られた整数のリストである必要があります。
このためのコードを書きましたが、どこかにエラーがあります。それでも、最近エラーを見つけることができません。誰かが私のコードを調べて、エラーがどこかに存在するかどうかを確認するのを手伝ってくれませんか? とても感謝しております!!
すべての if ステートメントは、実際のコードではタブ化されていますが、ここでインポートするのに問題がありました...
import sys
p = '(NM_\d+)\s+(chr\d+)([(\+)|(-)])\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+,\d+,)s+(\d+,\d+,)'
e = '([(\+)|(-)])'
def getGenes(spliced, infile, outfile):
spliced = False
if '-s' in sys.argv:
spliced = True
sys.argv.remove('s')
infile, outfile = sys.argv[1:]
if '.genes' not in infile:
print('Incorrect input file type')
sys.exit(1)
if '.fa' or '.fasta' not in outfile:
print('Incorrect output file type')
sys.exit(1)
if len(sys.argv[0]) < 2 or len(sys.argv[0]) > 3:
print('Command line parameters missing')
sys.exit(1)
if sys.argv[1] != '-s':
print('Invalid parameter, if spliced, must be -s')
sys.exit(1)
fp = open(infile, 'r')
wp = open(outfile, 'r')
FirstLine = fp.readline().strip()
if not FirstLine.startswith('#'):
print ('First line does not start with #')
sys.exit(1)
n = 1
for line in fp.readlines():
n += 1
cols = line.strip().split('')
if len(cols) != 10:
print('Lenth not equal to 10')
sys.exit(1)
if cols[2] != '+' or '-':
print('Column 2 is not a + or - symbol')
sys.exit(1)
if cols[8] != '\t\d+':
print('Column 8 is not a tab-separated list of integers')
sys.exit(1)
if cols[9] != '\t\d+' and len(cols[9]) != len(cols[8]):
print('Column 9 in not a tab-separated list of integers with the exact same number of integers in column 8')
sys.exit(1)