小编Mik*_*war的帖子

如何从字符串向量中创建一组唯一的名称?

我有一个字符串向量.看看我的矢量,它是awesome:

> awesome
[1] "a" "b" "c" "d" "d" "e" "f" "f"
Run Code Online (Sandbox Code Playgroud)

我想创建一个长度相同的新向量,awesome但必要时,字符串已被唯一化.例如,我所需函数的有效输出将是

> awesome.uniqueified
[1] "a" "b" "c" "d.1" "d.2" "e" "f.1" "f.2"
Run Code Online (Sandbox Code Playgroud)

有一个简单的,R-thonic和美丽的方式来做到这一点?我应该说我现实生活中的列表(它没有被调用awesome)包含25000个mircoarray探针集标识符.

当我开始编写一些通用函数(我确信我能做到)时,我总是很紧张,因为我确信有些R guru过去曾经遇到过这个问题,并用一些不可思议的算法来解决这个问题.甚至必须在矢量中存储超过一半的元素.我只是不确定他们可能称之为什么.可能不是uniqueify.

r

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

R:为什么read.table会停止读取文件?

我有一个名为的文件,genes.txt我想成为一个data.frame.它有很多行,每行有三个制表符分隔的字段:

mike$ wc -l genes.txt
   42476 genes.txt
Run Code Online (Sandbox Code Playgroud)

我想将这个文件读入R中的data.frame.我使用read.table命令,如下所示:

genes = read.table(
    genes_file, 
    sep="\t", 
    na.strings="-", 
    fill=TRUE,
    col.names=c("GeneSymbol","synonyms","description")
)
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,在哪里genes_file点genes.txt.但是,我的data.frame中的行数明显少于我的文本文件中的行数:

> nrow(genes)
[1] 27896
Run Code Online (Sandbox Code Playgroud)

我可以在文本文件中找到的东西:

mike$ grep "SELL" genes.txt 
SELL    CD62L|LAM1|LECAM1|LEU8|LNHR|LSEL|LYAM1|PLNHR|TQ1    selectin L
Run Code Online (Sandbox Code Playgroud)

似乎不在data.frame中

> grep("SELL",genes$GeneSymbol)
integer(0)
Run Code Online (Sandbox Code Playgroud)

事实证明

genes = read.delim(
    genes_file,
    header=FALSE,
    na.strings="-",
    fill=TRUE,
    col.names=c("GeneSymbol","synonyms","description"),
)
Run Code Online (Sandbox Code Playgroud)

工作得很好.为什么read.delim在read.table时不起作用?

如果它正在使用,您可以genes.txt使用以下命令重新创建,您应该从命令行运行这些命令

curl -O ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene_info.gz
gzip -cd gene_info.gz | awk -Ft '$1==9606{print $3 "\t" $5 "\t" $9}' > genes.txt
Run Code Online (Sandbox Code Playgroud)

但请注意,gene_info.gz是101MBish.

r

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

R + ggplot:如何使用自定义平滑器(高斯过程)

我正在使用R.我在15个时间点有25个变量,每个时间点每个变量有3个或更多个重复.我把melt它编成了一个data.frame,我可以愉快地使用(除其他外)ggplot的facet_wrap()命令.我的熔化数据框被调用lis; 这是它的头部和尾部,因此您可以了解数据:

> head(lis)
  time variable    value
1   10     SELL 8.170468
2   10     SELL 8.215892
3   10     SELL 8.214246
4   15     SELL 8.910654
5   15     SELL 7.928537
6   15     SELL 8.777784
> tail(lis)
    time variable    value
145    1     GAS5 10.92248
146    1     GAS5 11.37983
147    1     GAS5 10.95310
148    1     GAS5 11.60476
149    1     GAS5 11.69092
150    1     GAS5 11.70777
Run Code Online (Sandbox Code Playgroud)

我可以使用以下ggplot2命令获得所有时间序列的精美绘图,以及拟合样条曲线和95%置信区间:

p <- ggplot(lis, aes(x=time, y=value)) + facet_wrap(~variable)
p <- p + …
Run Code Online (Sandbox Code Playgroud)

r machine-learning gaussian ggplot2

10
推荐指数
2
解决办法
2269
查看次数

如何在coreOS上将etcd值输入我的systemd服务?

我有两个服务A和B.

A在启动时设置etcd中的值,比如它从环境文件中获取的公共IP地址:

ExecStartPost=/usr/bin/etcdctl set /A_ADDR $COREOS_PUBLIC_IPV4
Run Code Online (Sandbox Code Playgroud)

B在启动时需要该值,以及它自己的IP地址.所以这样的事情会很好:

ExecStart=/usr/bin/docker run -e MY_ADDR=$COREOS_PUBLIC_IPV4 -e A_ADDR=$ETCD_A_ADDR mikedewar/B
Run Code Online (Sandbox Code Playgroud)

但这显然是不可能的,因为etcd变量不会像这样的systemd环境变量.相反,我可以做一些/usr/bin/bash -c 'run stuff'我的,ExecStart但它很尴尬,特别是因为我需要systemd扩展$COREOS_PUBLIC_IPV4和我的新bash shell扩展$(etcdctl get /A_ADDR).它也充满了代码味道,让我觉得我错过了一些重要的东西.

有人能告诉我从etcd获取值到我ExecStart声明中的"正确"方法吗?

- 更新

所以我一直在运行

ExecStart=/usr/bin/bash -c 'source /etc/environment && /usr/bin/docker run -e A_ADDR=$(/usr/bin/etcdctl get /A_ADDR) -e MY_ADDR=$COREOS_PUBLIC_IPV4 mikedewar/B'
Run Code Online (Sandbox Code Playgroud)

但它很难看.还是不敢相信我没有错过什么..

systemd coreos etcd

10
推荐指数
2
解决办法
4993
查看次数

R + ggplot:绘制不规则的时间序列

我在事件发生后的几天内都有数据.这些数据是不定期抽样的 - 我的时间点分别为0,5,6,10,104天.我没有具体的日期时间信息 - 即我不知道在现实生活中我正在研究的事件发生了什么.

我想用ggplot绘制我的时间序列.我可以用,比方说

p <- ggplot(data,aes(x=time,y=expression))
p <- p + geom_point()
Run Code Online (Sandbox Code Playgroud)

但当然我的x轴变量是彼此相邻绘制的,因此t = 10和t = 104之间的距离与t = 5和t = 6相同.所以我可以做点什么

start <- ISOdate(2001, 1, 1, tz = "")
data$time <- start + data$time*60*60*12
Run Code Online (Sandbox Code Playgroud)

几乎可以工作,但现在我的x轴上的刻度是非常不准确的日期时间.我可以重新格式化它们吗?但无论如何都看不到格式"从开始的日子".到现在为止,我一直在谷歌上搜索相当长一段时间,有一种唠叨的感觉,我错过了一些非常明显的东西.我呢?

r time-series ggplot2

9
推荐指数
2
解决办法
5605
查看次数

R + Bioconductor:在ExpressionSet中组合probeset

首先,这可能是这个问题的错误论坛,因为R + Bioconductor具体相当.这就是我所拥有的:

library('GEOquery')
GDS = getGEO('GDS785')
cd4T = GDS2eSet(GDS)
cd4T <- cd4T[!fData(cd4T)$symbol == "",]
Run Code Online (Sandbox Code Playgroud)

现在cd4T是一个ExpressionSet对象,它包含一个包含19794行(probesets)和15列(样本)的大矩阵.最后一行消除了所有没有相应基因符号的探针组.现在麻烦的是,该组中的大多数基因被分配到多个探针组.你可以这样看

gene_symbols = factor(fData(cd4T)$Gene.symbol)
length(gene_symbols)-length(levels(gene_symbols))
[1] 6897
Run Code Online (Sandbox Code Playgroud)

因此,我的19794探针组中只有6897个具有独特的探针组 - >基因映射.我想以某种方式结合与每个基因相关的每个探针组的表达水平.我不太关心每个探针的实际探测ID.我非常希望最终得到一个包含合并信息的ExpressionSet,因为我的所有下游分析都是为了使用这个类而设计的.

我想我可以编写一些手工编写的代码,并从头开始创建一个新的表达式.但是,我假设这不是一个新问题,并且存在使用统计学上合理的方法来组合基因表达水平的代码.我猜这里也有一个合适的名字,但我的谷歌没有显示出太大的用处.有人可以帮忙吗?

r bioconductor

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

R + ggplot:如何根据每个方面更改选项

嗨,我在ggplot2中使用facet来绘制大量基因中表达的分布.我的绘图命令非常通用:

p <- ggplot(top_n,aes(x=value,fill=ptype))
p <- p + geom_density(alpha = 0.2)
p <- p + facet_wrap(~probe,...)
Run Code Online (Sandbox Code Playgroud)

他们只是将top_n中的数据绘制为根据ptype变量着色的分布.看起来不错.

然而,其中一些基因比其他基因更重要.例如,突出那些作为转录因子(TF)的基因真的很酷.一种方法是让我更改对应于TF的每个面的颜色标题框,或背景颜色,或类似的东西.

我有办法在每个方面设置图表的选项吗?

在p对象中挖掘并没有发现我可以使用的任何东西,尽管我可能遗漏了一些东西!

r ggplot2

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

应用两个数据框

我正在使用R,我有两个data.frames,A和B.它们都有6行,但A有25000列(基因),B有30列.我想申请一个函数有两个参数f(x,y),其中x为每列A及y为每一列B.到目前为止它看起来像这样:

i = 1
for (x in A){
    j = 1
    for (y in B){
        out[i,j] <- f(x,y)
        j = j + 1
    }
    i = i + 1
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:从我的Python编程中,我将跟踪这样的计数器作为关键,并且从我的R编程中我对循环感到紧张.但是,我不太明白如何申请apply(或者即使我应该申请apply)这个问题,并希望有人可以启发我.我现在需要将其f()视为原子(实际上是cor.test()).

r apply

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

将opencv阈值应用于numpy数组

我正在尝试将opencv的Threshold函数应用于numpy数组.我正在使用opencv 2.1的python绑定.它是这样的:

import cv
import numpy as np
a = np.random.rand(1024,768)
cv.Threshold(a,a,0.5,1,cv.CV_THRESH_BINARY)
Run Code Online (Sandbox Code Playgroud)

这会抛出一个错误:

OpenCV Error: Unsupported format or combination of formats () in threshold
Run Code Online (Sandbox Code Playgroud)

所以,我不相信,我知道我在做什么,但我希望Threshold将工作一样,例如Smooth,其中我可以运行

cv.Smooth(a,a)
Run Code Online (Sandbox Code Playgroud)

没有任何问题,最终得到一个平滑的(呃)图像.我不知道如何思考numpy的阵列作为OpenCV中看到他们"格式",但我厌恶的numpy的数组转换成OpenCV的图像格式,如果我没有(和我所有的尝试都失败了这样无论如何).

我想知道为什么Threshold没有在我试图使它的工作显然简单的方式工作,这将是伟大的,知道我应该不是做.

PS我知道我可以在numpy的阵列上自己执行阈值操作,但我试图找出OpenCV的.

python opencv numpy

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

golang阅读XML内存泄漏?

我们最近使用golang和encoding/xml.解码了很多XML .我们注意到,在相当多的文件之后,我们的盒子耗尽内存,开始交换,并且通常会死于不幸的死亡.所以我们做了一个测试程序.这里是:

package main

import (
    "encoding/xml"
    "io/ioutil"
    "log"
    "time"
)

// this XML is for reading AWS SQS messages
type message struct {
    Body          []string `xml:"ReceiveMessageResult>Message>Body"`
    ReceiptHandle []string `xml:"ReceiveMessageResult>Message>ReceiptHandle"`
}

func main() {
    var m message

    readTicker := time.NewTicker(5 * time.Millisecond)

    body, err := ioutil.ReadFile("test.xml")

    for {
        select {
        case <-readTicker.C:
            err = xml.Unmarshal(body, &m)
            if err != nil {
                log.Println(err.Error())
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它所做的就是一遍又一遍地重复解码XML文件.我们的框显示相同的症状:二进制文件的内存使用量无限制地增长,直到框开始交换.

我们还添加了一些分析代码,它在20 pprof秒后触发到上面的脚本中,并得到以下内容top100:

(pprof) top100
Total: 56.0 MB
    55.0 …
Run Code Online (Sandbox Code Playgroud)

xml profiling memory-leaks go

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