首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写池algoritm以提高实验室工作效率?

如何编写池algoritm以提高实验室工作效率?
EN

Stack Overflow用户
提问于 2021-09-06 14:43:25
回答 1查看 57关注 0票数 1

我想知道,是否有一个算法,计算最佳组合的样本,以创建池,以分析每一个样本。

例如:

我有5个不同大小的植物种群

代码语言:javascript
运行
复制
data = {'pop':[1,2,3,4,5],
        'size':[23,45,65,31,43]}

目的是分析每种植物的一个基因。我能做些什么来单独分析每一家工厂,但这可能涉及到太多的劳动。因此,我正考虑集中人口,以尽量减少所涉及的劳工。

例如,我可以简单地做pool1 = pop1,pop2,pop3 x pool2 = pop4,pop5,然后我在想为什么不做pool1 = pop2,pop5,pool2 = pop1,pop3和pool3 = pop4,所以我想知道是否有一种方法来计算种群或甚至植物的最佳组合(可以用每一种理想的方式来划分种群)。

因此,当pool1 (pop1,pop2,pop3)是阳性的(理想的基因发现)时,如何才能到达阳性的个体植物,即如何最有效地分割池以识别阳性的植物。一个种群的多个植物很可能是阳性的。

总的来说,我想尽量减少“运行”的次数。

据了解,阳性的预期频率为0.036。

我希望这个想法是明确的,有人对如何做到这一点有自己的想法。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-09-06 15:33:51

由于最初将植物划分为种群与这个问题无关,我将忽略它。

由于阳性的频率很低,我认为简单的二分法搜索应该是有效的。偶尔,我们会遇到这样的情况:我们将一个正的池分成两个子池,两个子池都是正的,但是由于阳性的频率很低,我们可以希望它不会发生得太频繁。

代码语言:javascript
运行
复制
import random

# random data
n = 23+45+65+31+43
data = [{'id': random.random(),
         'positive':  random.choices([True, False], weights=[36, 1000-36])[0]
        } for _ in range(n)]

def test_pool(pool):              # tests if a pool is positive
  # serious science in the lab happens here
  return any(d['positive'] for d in pool)

def get_positives(data):
  result = []
  nb_tests = 0
  pools = [data]
  while pools:
    pool = pools.pop()
    if len(pool) == 1:
      result.append(pool[0])
    else:
      for subpool in [pool[:len(pool)//2], pool[len(pool)//2:]]:
        nb_tests += 1
        if test_pool(subpool):
          pools.append(subpool)
  return result, nb_tests

results, nb_tests = get_positives(data)
ground_truth = [d for d in data if d['positive']]

print('NUMBER OF TESTS: {}'.format(nb_tests))
print('FOUND POSITIVES:')
print([d['id'] for d in results])
print('GROUND TRUTH:')
print([d['id'] for d in ground_truth])
# NUMBER OF TESTS: 46
# FOUND POSITIVES:
# [0.2505629359502266, 0.46483641024238254, 0.8786751274491258, 0.250765592789725]
# GROUND TRUTH:
# [0.250765592789725, 0.8786751274491258, 0.46483641024238254, 0.2505629359502266]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69076378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档