gpt4 book ai didi

python - 在 MySQL 查询中选择相交和侧翼区域

转载 作者:行者123 更新时间:2023-11-29 12:37:38 25 4
gpt4 key购买 nike

我正在使用一个 mysql 数据库,其中包含一个带有基因组岛的表,格式如下:

+----+-------+----------+----------+-----------------------------------------------+
| id | chrom | start | end | line_string |
+----+-------+----------+----------+-----------------------------------------------+
| 1 | 1 | 36568608 | 36569851 | ?? ?o?A ?? ?p?A |
| 2 | 1 | 82313020 | 82313491 | ?? ????A ?? L??A |
+----+-------+----------+----------+-----------------------------------------------+

线串的格式为:GeomFromText('Linestring(chrom start, chrom end)')“开始”和“结束”的数字指的是碱基对位置

我目前正在我的 python 脚本中选择岛屿与非岛屿区域,使用:

SELECT 'Island' as Island FROM islands 
WHERE MBRIntersects(GeomFromText('Linestring(%d %d, %d %d)'), line_string)
UNION ALL SELECT 'non-Island' LIMIT 1 % (Chr, Start, Chr, End)

但是,我想修改此查询,将岛屿海岸和大陆架定义为:

岛屿海岸 - 来自岛屿的 2,000 个碱基对

岛屿架 - 来自岛屿的 2,000 至 4,000 个碱基对

最佳答案

我使用以下方法解决了这个问题:

SELECT 'Island' as Island FROM methylation.islands FORCE INDEX (locations)
WHERE MBRIntersects(GeomFromText('Linestring(%d %d, %d %d)'), line_string)
UNION ALL SELECT 'Shore' FROM methylation.islands FORCE INDEX (locations)
WHERE MBRIntersects(GeomFromText('Linestring(%d %d, %d %d)'), line_string)
UNION ALL SELECT 'Shelf' FROM methylation.islands FORCE INDEX (locations)
WHERE MBRIntersects(GeomFromText('Linestring(%d %d, %d %d)'), line_string)
UNION ALL SELECT 'Other' LIMIT 1
% (Chr, Start, Chr, End, Chr, Start-2000, Chr, End+2000, Chr, Start-4000, Chr, End+4000)

以这种方式,任何“岛屿”都会被列出,接下来如果它距岛屿 +/- 2,000 个碱基对,它会被列为“海岸”,接下来如果它是 +/- 4,000 个碱基对,它会被列为“海岸” “架子”。最后,其他一切都被视为“其他”。通过使用LIMIT 1,仅返回第一个找到的术语。

关于python - 在 MySQL 查询中选择相交和侧翼区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26532188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com