import os
import pandas as pd
import getopt
import sys
import Levenshtein
import urllib.request
# def get(path):
file1 = r"File\2021-10\testfq.fastq"
df1 = pd.read_csv(file1, sep='\t',header=None)
print(df1)
list1=[i for i in range(len(df1)) if i % 4==0] #取0,4,8
# print(type(x),x)
list2=map(lambda x:x+1,list1) #都加1,参考https://blog.csdn.net/XianZhe_/article/details/107795700
list2_1=map(lambda x:x+1,list1)
list3=[i+2 for i in list1]
list4=[i+3 for i in list1]
# def is_ascii(s):
# return all(ord(c) < 128 for c in s)
#
# str1='CC>ICCCBI1C:CDCICHB+ACCCECG'
# is_ascii(str1)
list5=['A','T','C','G']
list6=[]
list7=[]
if len(df1) !=0 and len(df1) % 4==0:
for i in list1:
if str(df1.iloc[i,0])[0]=="@":
# continue
# print(str(df1.iloc[i, 0])[0])
if Levenshtein.ratio(str(df1.iloc[0,0])[0], str(df1.iloc[i,0])[0]) ==1.0 :# https://blog.csdn.net/Guo_Python/article/details/110229037
continue
else :
print("不是fastq,第1行,第5行等的第一个字符不相等")
exit()
else:
print("不是fastq,第一行不是@")
exit()
for m in list4:
if str(df1.iloc[m,0]).isascii() == True: # 判断是不是ascii码:https://blog.csdn.net/qq_41961087/article/details/107703076;https://blog.csdn.net/jacke121/article/details/85016331
# print("是ascii编码")
continue
# print(str(df1.iloc[m, 0])[0])
else:
print("不是fastq,不是ascii编码")
exit()
for x in list3:
if str(df1.iloc[x,0])[0]=="+":
continue
else:
print("不是fastq,第三行不是+")
exit()
for x in list2:
for i in range(len(str(df1.iloc[x,0]))):
if str(df1.iloc[x,0])[i] in list5:
# print('正确')
continue
else:
print("不是fastq,序列有别的字符")
exit()
for l in list2_1:
list6.append(len(str(df1.iloc[l,0])))
# print(list6)
# continue
# else:
# print("不是fastq,序列有别的字符")
# exit()
if len(set(list6))==1:
# continue
list7.append(len(str(df1.iloc[l+2,0])))
if len(set(list7))==1:
if set(list6)==set(list7):
continue
else :
print("不是fastq,第二和第四行长度不等")
exit()
else :
print("不是fastq,第四行长度不等")
exit()
else:
print("不是fastq,第二行长度不等")
exit()
print("是fastq文件")
else:
print("不是fastq文件,序列残缺,不是4的整数倍")
sequence_number=len(df1)
print('有'+str(int(len(df1)/4))+'条序列')
# print(list6)
arg = getopt.getopt(sys.argv[1:],'-h',['help'])
判断文件是fastq格式_20211207
最新推荐文章于 2024-06-14 09:50:01 发布