小编kev*_*ham的帖子

在 FACS 中绘制交错的直方图/线

我的问题基本上与这个问题相同,但对于 matplotlib。我确定它与轴或子图有关,但我认为我没有完全理解这些范式(更全面的解释会很棒)。

当我遍历一组比较时,我希望将每个新图的基 y 值设置为略低于前一个图,以获得如下结果:

在此处输入图片说明

另一个(潜在的)问题是我在循环中生成这些图,所以我不一定知道一开始会有多少图。我认为这是我对子图/轴心存疑虑的事情之一,因为您似乎需要提前设置它们。

任何想法将不胜感激。

编辑:我认为我取得了一点进步:

import numpy as np 
import pandas as pd
import matplotlib.pyplot as plt

x = np.random.random(100)
y = np.random.random(100)


fig = plt.figure()
ax = fig.add_axes([1,1,1,1])
ax2 = fig.add_axes([1.02,.9,1,1])

ax.plot(x, color='red')
ax.fill_between([i for i in range(len(x))], 0, x, color='red', alpha=0.5)
ax2.plot(y, color='green')
ax2.fill_between([i for i in range(len(y))], 0, y, color='green', alpha=0.5)
Run Code Online (Sandbox Code Playgroud)

给我: 在此处输入图片说明

这接近我想要的......

python plot matplotlib

4
推荐指数
1
解决办法
1769
查看次数

在python中打开Mongod,如何避免`shell = True`

我正在尝试编写一个python脚本,它将启动mongod,创建一个数据库(或打开我已经创建的数据库),添加一些信息,然后关闭mongod.

#!/usr/bin/env python

from pymongo import MongoClient
import subprocess

def create_mongo_database(database_name, path_to_database):
    mongod = subprocess.Popen(
        "mongod --dbpath {0}".format(path_to_database),
        shell=True
    )
    client = MongoClient()
    db = client[database_name]
    collection = db['test_collection']
    collection.insert_one({'something new':'some data'})
    mongod.terminate()
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但是阅读python文档,他们说shell=True在子进程中使用是一个坏主意.我对这些东西很新手,而且我真的不明白shell=True旗帜在做什么,但我明白在输入变量时访问shell是不好的.问题是,当我尝试运行此删除shell=True参数时,我收到以下错误:

Traceback (most recent call last):
  File "/Users/KBLaptop/computation/kvasir/mongo_test2.py", line 23, in <module>
    create_mongo_database('test5_database', '~/computation/db')
  File "/Users/KBLaptop/computation/kvasir/mongo_test2.py", line 12, in create_mongo_database
    "mongod --dbpath {0}".format(path_to_database),
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 709, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1326, in _execute_child
    raise child_exception
OSError: [Errno …
Run Code Online (Sandbox Code Playgroud)

python shell subprocess mongodb

2
推荐指数
1
解决办法
2394
查看次数

将字符串参数转换为正则表达式

在学习了 python 后试图进入 Julia,我在一些看似简单的事情上绊倒了。我想要一个将字符串作为参数的函数,但使用这些参数之一作为正则表达式来搜索某些内容。所以:

function patterncount(string::ASCIIString, kmer::ASCIIString)
    numpatterns = eachmatch(kmer, string, true)
    count(numpatterns)
end
Run Code Online (Sandbox Code Playgroud)

这有几个问题。首先,eachmatch期望一个Regex对象作为第一个参数,我似乎无法弄清楚如何转换字符串。在python中我会做r"{0}".format(kmer)- 有没有类似的东西?

其次,我显然不明白该count函数是如何工作的(来自文档):

计数(p,itr)?整数

计算 itr 中谓词 p 返回 true 的元素数。

但是我似乎无法弄清楚仅计算迭代器中有多少事物的谓词是什么。我可以制作一个简单的计数器循环,但我认为它必须是内置的。我就是找不到它(尝试过文档,尝试过搜索......没有运气)。

编辑:我也试过numpatterns = eachmatch(r"$kmer", string, true)- 不行。

julia

2
推荐指数
1
解决办法
872
查看次数

如何在Julia中将GroupedDataFrame转换为DataFrame?

我已经使用以下groupby函数对DataFrame的子集进行了计算:

using RDatasets
iris = dataset("datasets", "iris")
describe(iris)
iris_grouped = groupby(iris,:Species)
iris_avg = map(:SepalLength => mean,iris_grouped::GroupedDataFrame)
Run Code Online (Sandbox Code Playgroud)

现在,我想绘制结果,但以下图出现错误消息:

@df iris_avg bar(:Species,:SepalLength)
Run Code Online (Sandbox Code Playgroud)

仅支持表

绘制数据的最佳方法是什么?我的想法是创建一个DataFrame并从那里开始。我将如何做,即如何将GroupedDataFrame转换为单个DataFrame?谢谢!

dataframe julia plots.jl

2
推荐指数
1
解决办法
49
查看次数

循环打开和关闭文件

假设我有一个包含数万个条目的列表,我想将它们写入文件。如果列表中的项目符合某些条件,我想关闭当前文件并开始一个新文件。

我有几个问题,我认为它们源于这样一个事实,即我想根据该文件中的第一个条目命名文件。此外,启动新文件的信号基于条目是否具有与前一个相同的字段。因此,例如,假设我有以下列表:

l = [('name1', 10), ('name1', 30), ('name2', 5), ('name2', 7), ('name2', 3), ('name3', 10)]
Run Code Online (Sandbox Code Playgroud)

我想最终得到 3 个文件,name1.txt应该包含10and 30name2.txt应该有5, 7and 3,并且name3.txt应该有10. 该列表已经按第一个元素排序,所以我需要做的就是检查第一个元素是否与前一个元素相同,如果不是,则开始一个新文件。

起初我试过:

name = None
for entry in l:
    if entry[0] != name:
        out_file.close()
        name = entry[0]
        out_file = open("{}.txt".format(name))
        out_file.write("{}\n".format(entry[1]))
    else:
        out_file.write("{}\n".format(entry[1]))

out_file.close()
Run Code Online (Sandbox Code Playgroud)

据我所知,这有几个问题。首先,第一次通过循环,没有out_file关闭。其次,我不能关闭最后out_file创建的,因为它是在循环内定义的。以下解决了第一个问题,但看起来很笨重:

for entry in l:
    if name:
        if entry[0] != name:
            out_file.close()
            name = entry[0] …
Run Code Online (Sandbox Code Playgroud)

python biopython pandas

1
推荐指数
1
解决办法
3875
查看次数