python程序求解

python程序求解,第1张

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序列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10117769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存