Por que preciso de um arquivo compatível
Estou tentando executar o velocyto com o pacote R para analisar a velocidade do RNA (trajetórias celulares) com dados RNASeq de uma única célula. Realizei uma análise de célula única a partir de dados 10x Genomics usando cellranger.
Alinhei com sucesso as leituras para obter arquivos de tear e importei-os para R. Posso obter a velocidade desses arquivos seguindo vinhetas. No entanto, não posso reproduzir a análise de velocidade do RNA com base na "estrutura do gene".
Estou trabalhando com um organismo diferente do exemplo (não humano ou camundongo), portanto os dados de anotação fornecidos no exemplo não trabalhos. Eu tenho um arquivo GTF para a última anotação deste organismo. No entanto, ele contém apenas “exon” e “CDS” como recursos. Essa parece ser a origem do problema. A função “find.ip.sites” requer um GTF com “features” = “gene” e um dos “atributos” como “protein_coding”. Esses requisitos são embutidos em código na função velocyto.R.
Eu tenho os seguintes arquivos GTF do conjunto de dados AtRTD2. Os rótulos dos cromossomos correspondem aos arquivos de tear em R.
Chr1 TAIR10 exon 3631 3913. +. transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 exon 3996 4276. +. transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 exon 4486 4605. +. transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 exon 4706 5095. +. transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 exon 5174 5326. +. transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 exon 5439 5899. +. transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 CDS 3760 3913. + 0 transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010";
Chr1 TAIR10 CDS 3996 4276. + 2 transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 CDS 4486 4605. + 0 transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 CDS 4706 5095. + 0 transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 CDS 5174 5326. + 0 transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 TAIR10 CDS 5439 5630. + 0 transcript_id "AT1G01010.1"; gene_id "AT1G01010"; gene_name "AT1G01010"; Chr1 Araport11 exon 6788 7069. -. transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Observe "ARV1"; Chr1 Araport11 exon 7157 7450. -. transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 exon 7564 7649. -. transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 exon 7762 7835. -. transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 exon 7942 7987. -. transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 exon 8236 8325. -. transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 exon 8417 8464. -. transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 exon 8571 8737. -. transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 CDS 7315 7450. - 1 transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Observe "ARV1";
Chr1 Araport11 CDS 7564 7649. - 0 transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 CDS 7762 7835. - 2 transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 CDS 7942 7987. - 0 transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1"; Chr1 Araport11 CDS 8236 8325. - 0 transcript_id "AT1G01020_P2"; gene_id "AT1G01020"; gene_name "AT1G01020"; Nota "ARV1";
As especificações para um GTF ou GFF2 são:
Campos
Os campos devem ser separados por tabulação. Além disso, todos, exceto o campo final em cada linha de recurso, devem conter um valor; colunas "vazias" devem ser denotadas com um '.'
seqname - nome do cromossomo ou estrutura; os nomes dos cromossomos podem ser fornecidos com ou sem o prefixo 'chr'. Nota importante: o seqname deve ser usado dentro do Ensembl, ou seja, um nome de cromossomo padrão ou um identificador do Ensembl, como uma ID de cadafalso, sem qualquer conteúdo adicional, como espécie ou montagem. Veja o exemplo de saída do GFF abaixo.
fonte - nome do programa que gerou este recurso ou a fonte de dados (banco de dados ou nome do projeto)
recurso - nome do tipo de recurso, por exemplo Gene, Variation, Similarity
início - Posição inicial do elemento, com numeração sequencial começando em 1.
final - Posição final do elemento, com numeração sequencial começando em 1.
pontuação - Um valor de ponto flutuante.
vertente - definido como + (avançar) ou - (retroceder).
frame - Um de '0', '1' ou '2'. '0' indica que a primeira base do recurso é a primeira base de um códon, '1' que a segunda base é a primeira base de um códon e assim por diante.
attribute - Uma lista separada por ponto-e-vírgula de pares de valores de tags, fornecendo informações adicionais sobre cada recurso.
O que estou procurando para
Existe uma maneira de derivar um arquivo GTF compatível contendo genes codificadores de proteínas dos exons e CDS? Quero produzir um GTF que contenha genes nas características e codificação_proteica nos atributos. É possível fazer isso com ferramentas ou scripts existentes?
O que tentei até agora
Posso modificar o código-fonte da função “find.ip.sites” para executar meu arquivo GTF com esses recursos ausentes. No entanto, isso requer a execução de funções internas do pacote escrito em Rcpp e significa que meu fluxo de trabalho substitui futuras atualizações do pacote. Executar o resto da vinheta retorna erros, pois nenhum íntron longo o suficiente foi identificado (definir os limites mais baixos também é incompatível com os modelos lineares gerais chamados). Portanto, acho melhor gerar um arquivo GTF ou GFF3 compatível do que alertar o código-fonte das funções.
Embora destinadas a arquivos GTF, as funções do pacote podem importar arquivos GFF3, apesar de serem descritas para GTF na documentação. Eu tentei gerar um arquivo GFF3 usando gffread de Cufflinks e substituindo “feature” = “mRNA” por “gene” e adicionando “protein_coding”. Isso também retorna erros ao executar o algoritmo de velocidade. Ele não funciona para o arquivo GTF usado como entrada para cellranger ou para o arquivo gerado por ele. Existe uma maneira de anotar genes que codificam proteínas e limites de íntron / exon com base em um arquivo GTF contendo apenas anotações de exon e CDS?
Com botões de punho 2.2.1, um GFF3 foi gerado
gffread - E AtRTD2_19April2016.gtf -o- > AtRTD2_19April2016.gffsed -i '/ ARNm / s / gene_name = AT / gene_type = protein_coding; gene_name = AT / g' AtRTD2_19April2016.gff'sed -i 's / ARNm / gene / g 'AtRTD2_19April2016.gff
Estes são os arquivos GFF3 que experimentei:
# gffread - E AtRTD2_19April2016.gtf -o- ## gff-version3Chr1 TAIR10 gene 3631 5899. +. ID = AT1G01010.1; geneID = AT1G01010; gene_type = proteína_coding; gene_name = AT1G01010Chr1 TAIR10 exon 3631 3913. +. Pai = AT1G01010.1Chr1 TAIR10 exon 3996 4276. +. Pai = AT1G01010.1Chr1 TAIR10 exon 4486 4605. +. Pai = AT1G01010.1Chr1 TAIR10 exão 4706 5095. +. Pai = AT1G01010.1Chr1 TAIR10 exon 5174 5326. +. Pai = AT1G01010.1Chr1 TAIR10 exon 5439 5899. +. Pai = AT1G01010.1Chr1 TAIR10 CDS 3760 3913. + 0 Pai = AT1G01010.1Chr1 TAIR10 CDS 3996 4276. + 2 Pai = AT1G01010.1Chr1 TAIR10 CDS 4486 4605. + 0 Pai = AT1G01010.1Chr1 TAIR10 CDS 4706 5095. + 0 Pai = AT1G01010.1Chr1 TAIR10 CDS 5174 5326. + 0 Pai = AT1G01010.1Chr1 TAIR10 CDS 5439 5630. + 0 Pai = gene AT1G01010.1Chr1 Araport11 6788 8737. +. ID = AT1G01020_P2; geneID = AT1G01020; gene_type = proteína_coding; gene_name = AT1G01020 Chr1 Araport11 exon 6788 7069. -. Pai = AT1G01020_P2Chr1 Araport11 exon 7157 7450. -. Pai = AT1G01020_P2Chr1 Araport11 exon 7564 7649. -. Pai = AT1G01020_P2Chr1 Araport11 exon 7762 7835. -. Pai = AT1G01020_P2Chr1 Araport11 exon 7942 7987. -. Pai = AT1G01020_P2Chr1 Araport11 exon 8236 8325. -. Pai = AT1G01020_P2Chr1 Araport11 exão 8417 8464. -. Pai = AT1G01020_P2Chr1 Araport11 exon 8571 8737. -. Pai = AT1G01020_P2Chr1 Araport11 CDS 7315 7450. - 1 Pai = AT1G01020_P2Chr1 Araport11 CDS 7564 7649. - 0 Pai = AT1G01020_P2Chr1 Araport11 CDS 7762 7835. - 2 Pai = AT1G01020_P2
Chr1 Araport11 CDS 7942 7987. - 0 Pai = AT1G01020_P2Chr1 Araport11 CDS 8236 8325. - 0 Parent = AT1G01020_P2
As especificações para um GTF ou GFF2 são:
As especificações para um GF3 são:
Campos
Os campos devem ser separados por tabulação. Além disso, todos, exceto o campo final em cada linha de recurso, devem conter um valor; colunas "vazias" devem ser denotadas com um '.'
seqid - nome do cromossomo ou estrutura; os nomes dos cromossomos podem ser fornecidos com ou sem o prefixo 'chr'. Nota importante: o ID de seq deve ser usado dentro do Ensembl, ou seja, um nome de cromossomo padrão ou um identificador do Ensembl, como um ID de cadafalso, sem qualquer conteúdo adicional, como espécie ou montagem. Veja o exemplo de saída GFF abaixo.
fonte - nome do programa que gerou este recurso, ou a fonte de dados (banco de dados ou nome do projeto)
tipo - tipo de característica. Deve ser um termo ou acesso da ontologia de sequência SOFA
início - posição inicial do recurso, com numeração de sequência começando em 1.
final - Posição final do elemento, com numeração sequencial começando em 1.
pontuação - Um valor de ponto flutuante.
vertente - definido como + (para frente) ou - (reverso).
fase - Um de '0', '1' ou '2'. '0' indica que a primeira base do recurso é a primeira base de um códon, '1' que a segunda base é a primeira base de um códon e assim por diante.
atributos - uma lista separada por ponto-e-vírgula de pares de valor de tag, fornecendo informações adicionais sobre cada recurso. Algumas dessas tags são predefinidas, por exemplo, ID, nome, alias, pai - consulte a documentação GFF para obter mais detalhes.