def encrypt(char):
if charisupper():
return chr((ord(char) - ord('A') + 1) % 26 + ord('A'))
elif charislower():
return chr((ord(char) - ord('a') + 1) % 26 + ord('a'))
else:
return char
with open('words_filetxt', 'r') as f:
content = fread()
encrypted_content = ''join(encrypt(c) for c in content)
with open('new_filetxt', 'w') as f:
fwrite(encrypted_content)
在上面的代码中,我们首先使用 open() 函数打开 words_filetxt 文件,然后使用 read() 方法读取文件中的所有内容。
然后,我们使用一个名为 encrypt() 的函数来加密文件内容中的英文字母。该函数使用 isupper() 和 islower() 函数来判断字符是否为大写字母或小写字母。如果是大写字母,则使用 ord() 函数将字符转换为 ASCII 码,然后使用上述规则进行加密。如果是小写字母,则使用相同的方法进行加密。如果字符不是字母,则直接返回该字符。
最后,我们使用 join() 函数将加密后的文件内容拼接起来,然后使用 open() 函数打开 new_filetxt 文件,并使用 write() 方法将加密后的文件内容写入该文件。
机器人回答
DSS是一个R包,对基于计数的测序数据进行差异分析。 它可以检测来自RNA-seq的差异表达基因(DEG),以及来自亚硫酸氢盐测序(BS-seq)的差异甲基化位点或区域(DML / DMR)。
DSS (Dispersion Shrinkage for Sequencing data),为基于高通量测序数据的差异分析而设计的Bioconductor包。主要应用于BS-seq(亚硫酸氢盐测序)中计算不同组别间差异甲基化位点(DML)和差异甲基化区域(DMR)即Call DML or DMR。
使用R包DSS多种方式检验差异甲基化信号区域。
这里我使用的R版本为360,安装“DSS”包
1准备输入文件
DSS包要求输入数据格式:每一行代表一个CpG位点,格式如下:
第一列为染色体
第二列为位置
第三列为总reads数
第四列为甲基化的reads数
我们看一下上一步我们得到的数据test_R1_bismark_bt2_pededuplicatedbismarkcovgz
在filecovgz中
第一列数据为染色体
第二、三列数据为甲基化位置
第四列为甲基化百分比
第五列为甲基化数目
第六列为未甲基化数目
在这里,需要对我们的数据利用R,linux或者python整理成DSS包所需输入文件格式。这里我使用python整理的输入文件格式。
2对不同组别之间DNA甲基化进行差异分析
这里我们使用DSS包自带的数据
21 加载DSS包,并读取甲基化数据
22构建BSobj对象
可以看出我们的数据包括4个样本,34739个甲基化位点。
23利用DMLtest函数call DML
For whole-genome BS-seq data, perform DML test with smoothing
smoothing: 用于指示是否在估计平均甲基化水平时应用平滑的标志,这里我理解的smoothing有点类似滑动窗口的意思。我们也可以选择smoothing=False
24利用callDML函数可以找出差异甲基化位点
delta:定义DML的阈值。在DML检验程序中,在每个CpG位点进行两组均值相等的假设检验。这里如果指定了delta,函数将计算均值差大于delta的后验概率,然后基于此调用DML。
pthreshold: 当未指定delta时,这是定义DML的p值阈值,例如p值小于该阈值的位点将被视为DML。当指定delta时,后验概率大于1-p阈值的CpG位点被视为DML。
25利用callDMR函数可以找出差异甲基化区域
当不同组别间CpG位点区域具有显著的统计学差异时这段差异区域被定义为DMRs。DMR也是基于DML被检测出来的。
如果想把甲基化位点和甲基化区域信息输出,可通过writecsv()输出。
26 #使用showOneDMR函数可视化DMR
给定一个DMR和一个BSseq对象,此函数将生成一个多面板图,每个图对应一个示例文件,以可视化甲基化水平。每个CpG上都有一个条,灰色线条表示总覆盖率,蓝色线条表示甲基化水平。
showOneDMR唯一缺陷只能展示一个区域甲基化水平,有点丑,感兴趣的同学可以自己利用脚本画一下全基因组甲基化水平。
参考:
1 >
RULE={'A':'T','T':'A','C':'G','G':'C'}
DNA_LIST='CATGCATCGT'
print ""join(map(lambda x:RULE[x],DNA_LIST))[::-1]
s = ""
for i in DNA_LIST:
if i == "A":
s = s+"T"
if i == "T":
s = s+"A"
if i == "C":
s = s+"C"
if i == "G":
s = s+"G"
print s
没用C写,用python写的,道理都一样。
def generate(n): //n为长度for i in range(4n):
a=[0 for i in range(n)] //a为长度为n的一个序列
num = i
z = 0
while(num!=0):
a[z]=num%4
z = z+1
num = int(num/4)
for j in a:
if j==0:
print('A',end="")
elif j==1:
print('T',end="")
elif j==2:
print('G',end="")
else:
print('C',end="")
print()
原理就是四进制转换。
当调用函数generate(2),产生结果AA,TA,GA,CA,AT,TT,GT,CT,AG,TG,GG,CG,AC,TC,GC,CC
python可以判断序列是否氨基酸。
当前python目录下有一个PDB文件,利用pymol的命令模式。
perl代码写的DNA序列比对,用的是smith比对的算法,只要提交输入比较比对即可。
lt='CATGCATCGT'
def func1(liststr):
t=list(liststr);d=[]
dct={'A':'T','T':'A','C':'G','G':'C'}
for x in range(len(t)):
dappend(dct[tpop()])
return d
其他的都简单,1直接字符串反向处理,再逐一翻译;2用正负数来处理,这个对于大量的任务可以提高效率;3两遍处理,True、False开关;4列表内替换,然后反向;5成对换位,不过效率低下; 6还有就是直接的字符串替换,然后一个切片s[::-1]就OK了 ;
lt='CATGCATCGT'
lt=ltreplace('A','{A}')replace('T','{T}')replace('C','{C}')replace('G','{G}')
result=ltformat(A='T',T='A',C='G',G='C')[::-1]
import re
fatloss = "\nGym workout for fat loss\n\nPlate thrusters (15 reps x 3 sets)\nMountain climbers (20 reps x 3 sets)\nBox jumps (10 reps x 3 sets)\nLounges (10 reps x 3 sets)\nRenegade rows (10 reps x 3 sets)\nPress ups (15 reps x 3 sets)\nTreadmill (15 mins x 2 sets)\nSupermans (15 reps x 3 sets)\nCrunches (20 reps x 3 sets)"
# fatlosssplit('\n')
# print(fatloss)
find_all = refindall(r'[(]',fatloss)
exercise = []
for i in find_all:
exerciseappend(ireplace(' (','')lower())
# print(exercise)
num = refindall("\d+",fatloss)
reps_list = []
sets_list = []
for i in range(len(num)):
if i%2 == 0:
reps_listappend(int(num[i]))
else:
sets_listappend(int(num[i]))
x_list = []
for i in range(len(reps_list)):
x_listappend(reps_list[i] sets_list[i])
# print(x_list)
x_dict = dict(zip(exercise,x_list))
# print(x_dict)
def answer(x,a):
if 60 < a <= 65:
ans = x(1-1/100(a-60))
elif a <= 75:
ans = x(1-5/100-2/100(a-65))
elif a <= 80:
ans = x(1-25/100-3/100(a-75))
if a > 80 or 40/100+4/100(a-80) > 80 :
ans = min((40/100+4/100 (a-80)),80)
return ans
e = input('enter the exercise you want to do:')lower()
x = x_dictget(e)
a = int(input('enter your age:'))
ans = answer(x,a)
feedback = f'The extraction of {etitle()} is {ans}/mins'
print(feedback)
不确定是不是你要的东西,但姑且可以当参考吧。
以上就是关于python程序求解全部的内容,包括:python程序求解、DNA甲基化数据分析(二)、如何用Python脚本实现查询CDS序列中的SSR序列(简单重复序列),并输出SSR序列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)