Python для определения минимальных хромосомных областей среди образцов

В NInject, с которым вы отметили это, вы вводите автоматически созданный Factory в форме Func, используя FuncModule, как описано в этом сообщении .

Этот подход также доступен в autofac для одного.

Различные ответы Factory method рассматриваются в ответах на этот вопрос .

EDIT: NB Хотя это может быть интересно, воспользуйтесь решением @Remo Gloor (и критически советуем избегать такого решения)

1
задан lindak 18 March 2019 в 14:35
поделиться

2 ответа

Не уверен, является ли это вопросом для Unix & amp; Linux stackexchange. Это больше похоже на общий вопрос программирования.

Тем не менее, я бы посоветовал вам изучить использование pandas.

Вы можете импортировать файл примера в виде кадра данных, указав схему вкладки следующим образом:

import pandas as pd
df = pd.read_csv('/tmp/samplefile.csv',sep='\t')

Если вы знаете, что startpos всегда будет меньше, чем endpos, вы можете найти вывод, который вы ' ищите, взяв максимум df['startpos'] и минимум df['endpos'].

0
ответ дан mttpgn 18 March 2019 в 14:35
поделиться

Существуют инструменты, предназначенные специально для работы с данными формата BED, которые вы бы хорошо изучили. bedtools , вероятно, является наиболее распространенным и простым в получении, и у него есть доступная оболочка для python , если вам абсолютно необходимо использовать python.

Инструмент multiIntersectBed - это то, что вам, вероятно, нужно, и его следует использовать довольно просто:

Пример использования:

== Input files: ==

 $ cat a.bed
 chr1  6   12
 chr1  10  20
 chr1  22  27
 chr1  24  30

 $ cat b.bed
 chr1  12  32
 chr1  14  30

 $ cat c.bed
 chr1  8   15
 chr1  10  14
 chr1  32  34

 $ cat sizes.txt
 chr1  5000

== Multi-intersect the files: ==

 $ multiIntersectBed -i a.bed b.bed c.bed
chr1    6       8       1       1       1       0       0
chr1    8       12      2       1,3     1       0       1
chr1    12      15      3       1,2,3   1       1       1
chr1    15      20      2       1,2     1       1       0
chr1    20      22      1       2       0       1       0
chr1    22      30      2       1,2     1       1       0
chr1    30      32      1       2       0       1       0
chr1    32      34      1       3       0       0       1

== Multi-intersect the files, with a header line (titles are the file names): ==

 $ multiIntersectBed -header -i a.bed b.bed c.bed
 chrom  start   end     num     list    a.bed   b.bed   c.bed
 chr1   6       8       1       1       1       0       0
 chr1   8       12      2       1,3     1       0       1
 chr1   12      15      3       1,2,3   1       1       1
 chr1   15      20      2       1,2     1       1       0
 chr1   20      22      1       2       0       1       0
 chr1   22      30      2       1,2     1       1       0
 chr1   30      32      1       2       0       1       0
 chr1   32      34      1       3       0       0       1

== Multi-intersect the files, with a header line and custom names: ==

 $ multiIntersectBed -header -i a.bed b.bed c.bed -names A B C
 chrom  start   end     num     list    A       B       C
 chr1   6       8       1       A       1       0       0
 chr1   8       12      2       A,C     1       0       1
 chr1   12      15      3       A,B,C   1       1       1
 chr1   15      20      2       A,B     1       1       0
 chr1   20      22      1       B       0       1       0
 chr1   22      30      2       A,B     1       1       0
 chr1   30      32      1       B       0       1       0
 chr1   32      34      1       C       0       0       1

== Multi-intersect the files, showing empty regions (note, requires -g): ==

 $ multiIntersectBed -header -i a.bed b.bed c.bed -names A B C -empty -g sizes.txt
 chrom  start   end     num     list    A       B       C
 chr1   0       6       0       none    0       0       0
 chr1   6       8       1       A       1       0       0
 chr1   8       12      2       A,C     1       0       1
 chr1   12      15      3       A,B,C   1       1       1
 chr1   15      20      2       A,B     1       1       0
 chr1   20      22      1       B       0       1       0
 chr1   22      30      2       A,B     1       1       0
 chr1   30      32      1       B       0       1       0
 chr1   32      34      1       C       0       0       1
 chr1   34      5000    0       none    0       0       0

Затем можно выполнить фильтрацию по 4-му столбцу, чтобы удовлетворить ваши оговоренные состояние для регионов.

0
ответ дан Jared Andrews 18 March 2019 в 14:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: