【发布时间】:2017-02-25 06:14:07
【问题描述】:
我将样本存储在以下列表中
sample = [AAAA,CGCG,TTTT,AT-T,CATC]
..为了说明问题,我在下面将它们表示为“集合”
Set1 AAAA
Set2 CGCG
Set3 TTTT
Set4 AT-T
Set5 CATC
- 消除所有集合,其中集合中的每个元素都与其自身相同。
输出:
Set2 CGCG
Set4 AT-T
Set5 CATC
在集合之间执行成对比较。 (Set2 v Set4, Set 2v Set5, Set4 v Set5)
-
每个成对比较只能有两种类型的组合,如果没有,则这些成对比较被消除。例如,
Set2 Set5 C C G A C T G C
这里,对(CC),(GA),(CT)和(GC)有两种以上的类型。所以这种成对比较是不可能发生的。
每个比较只能有(AA,GG,CC,TT,AT,TA,AC,CA,AG,GA,GC,CG,GT,TG,CT,TC)中的2种组合......基本上都是顺序很重要的 ACGT 的可能组合。
在给定的示例中,找到了超过 2 个这样的组合。
因此,Set2 和 Set4;不能考虑 Set4 和 Set5。因此剩下的唯一对是:
Output
Set2 CGCG
Set4 AT-T
-
在这个成对比较中,删除任何带有“-”的元素及其在另一对中的对应元素
Output Set2 CGG Set4 ATT -
计算 Set2 和 Set4 中元素的频率。计算集合中类型对的出现频率(CA 和 GT 对)
Output Set2 (C = 1/3, G = 2/3) Set4 (A = 1/3, T = 2/3) Pairs (CA = 1/3, GT = 2/3) -
计算对应元素的float(a) = (Pairs) - (Set2) * (Set4)(任意一对就足够了)
eg. For CA pairs, float (a) = (freq of CA pairs) - (freq of C) * (freq of A)
注意:如果对是 AAAC 和 CCCA,则 C 的频率将是 1/4,即它是碱基在其中一对上的频率
-
计算
float (b) = float(a)/ (freq of C in CGG) * (freq G in CGG) * (freq A in ATT) * (ATT==> freq of T in ATT) 对所有成对比较重复此操作
例如。
Set2 CGCG
Set4 AT-T
Set6 GCGC
Set2 v Set4,Set2 v Set6,Set4 v Set6
到目前为止我的半生不熟的代码: ** 如果建议的所有代码都采用标准 for 循环格式而不是推导式,我会更喜欢 **
#Step 1
for i in sample:
for j in range(i):
if j = j+1 #This needs to be corrected to if all elements in i identical to each other i.e. if all "j's" are the same
del i
#insert line of code where sample1 = new sample with deletions as above
#Step 2
for i,i+1 in enumerate(sample):
#Step 3
for j in range(i):
for k in range (i+1):
#insert line of code to say only two types of pairs can be included, if yes continue else skip
#Step 4
if j = "-" or k = "-":
#Delete j/k and the corresponding element in the other pair
#Step 5
count_dict = {}
square_dict = {}
for base in list(i):
if base in count_dict:
count_dict[base] += 1
else:
count_dict[base] = 1
for allele in count_dict:
freq = (count_dict[allele] / len(i)) #frequencies of individual alleles
#Calculate frequency of pairs
#Step 6
No code yet
【问题讨论】:
-
我不明白第 3 步。
CGCG和AT-T如何产生这些对? -
每次比较只能有 2 种组合 (AA, GG,CC,TT, AT,TA,AC,CA,AG,GA,GC,CG,GT,TG,CT,TC) ...基本上所有可能的 ACGT 组合,其中顺序很重要。在给定的示例中,找到了超过 2 个这样的组合。因此,Set2 和 Set4; Set4 和 Set5 不能考虑。
-
您能否提供一个示例,说明您在步骤中对 AAAC 和 CCCA 所说的“c 的频率”是什么意思?是 1/4 还是 1/2?也就是说,是单对还是两对碱基的频率?
-
base1 应该是什么?考虑到它们没有匹配的字母,set2 和 set4 是如何匹配的?
-
我已更正“base1”声明。 Set2 和 Set4 被认为是匹配的,因为它们符合标准,它只有 2 个唯一的组合 CA 和 GT..而 Set2 v Set5 有 (CC)、(GA)、(CT) 和 (GC)(超过2 对独特的)
标签: python list for-loop dictionary frequency