Mostrando entradas con la etiqueta github. Mostrar todas las entradas
Mostrando entradas con la etiqueta github. Mostrar todas las entradas

7 de febrero de 2024

Browsing barley pangenes

Hi,

late last year we published a paper describing GET_PANGENES, a protocol to call pangenes, which are clusters of gene models/alleles found in genomic assemblies in a similar location. You can read all about it at https://doi.org/10.1186/s13059-023-03071-z . Using this approach you can produce figures like this, where you can see the pangene of interest in green:

Genomic context of barly pangene cluster HORVU.MOREX.r3.3HG0311160 (green arrows), which corresponds to barley locus HvOS2. Figure from https://doi.org/10.1186/s13059-023-03071-z
 

As we do research on barley breeding and adaptation, we thought it would be useful for us and others out there to have way of inspecting barley pangenes, for instance to check whether a gene of interest is conserved or polymorphic across the barleys sampled by in the pangenome (n=20) put together by Jayakodi et al.

This exactly what you can do, at the protein sequence level, at https://eead-csic-compbio.github.io/barley_pangenes , where you can scroll pangenes along chromosomes, with MorexV3 positions; genes not found in MorexV3 lack a position therefore and are shown with a hash (#):


You will notice that pangenes with occupancy > 1, ie containing gene models found it at least two barleys, can be clicked to display a multiple protein alignment with help from the NCBI msaviewer:


There you can easily zoom in to regions of interest and print or export the alignment in FASTA, PDF or SVG format (high quality).

Hope this can be useful to the barley genomics community,

Bruno

 

30 de junio de 2022

probamos OpenFold , la versión open source alphafold

Hola,

la semana pasada me encontré con este hilo donde Mo AlQuraishi publicaba que su grupo liberaba por primera vez OpenFold, la primera implementación de AlphaFold2 que podemos ejecutar localmente e incluso re-entrenar con PyTorch, permitiéndonos un control total del proceso. Como dicen los autores en el repositorio, OpenFold es "una reproducción fiel pero entrenable de AlphaFold2". Esto parece resolver la preocupación que expresaba en una entrada anterior sobre cuándo serían estos predictores de código abierto (lee más aquí).

https://pbs.twimg.com/media/FVzppu-UEAACeer?format=png&name=small 

Figura tomada de https://github.com/aqlaboratory/openfold

 

Como explica Mo, también han puesto a disposición de cualquiera los datos que usaron para entrenar OpenFold, siguiendo exactamente la metodología del artículo original de AlphaFold2. El código está disponible en https://github.com/aqlaboratory/openfold y se puede probar de varias maneras:

  • un cuaderno Colab (similar a ColabFold)
  • un contenedor Docker
  • un script python local con instrucciones de cómo hay que instalar las dependencias y los datos, un proceso largo y farragoso, pero el más adecuado para sacar partido a tu GPU


Hasta pronto,

Bruno


28 de febrero de 2022

diagramas de flujo y Gantt en Markdown

Hola,

iba a decir buenos días, pero lamentablemente seguimos pendientes de la invasión y resistencia en Ucrania; mejor lo dejo. Espero que sean buenos pronto.

Hoy solamente quería compartir un hallazgo reciente sobre cómo crear diagramas de flujo en Markdown. A mi me resulta especialmente útil en un repositorio GitHub, porque es donde más Markdown escribo para documentar código y datos, y además sin instalar nada. En concreto, la librería js mermaid está ya satisfecha de antemano en GitHub.

 

 Para que veáis qué fácil es pongo como ejemplo el siguiente diagrama, que podéis ver en https://raw.githubusercontent.com/eead-csic-compbio/eead-csic-compbio.github.io/master/README.md :

```mermaid
  graph TD;
      github-->repositories;
      github-->github.io
      github.io-->scripts;
      github.io-->data;
      github.io-->compbio/md;
```

O ya ejecutado en https://github.com/eead-csic-compbio/eead-csic-compbio.github.io :

 Además de diagramas de flujo, otro tipo de diagrama que encuentro muy útil es el diagrama de Gannt, para organizar tareas en el tiempo, por ejemplo en un proyecto:


```mermaid
gantt
dateFormat  YYYY-MM-DD
title Diagrama de GANTT con mermaid

section Sección A
Tarea finalizada       :done,    des1, 2014-01-06,2014-01-08

Tarea en marcha            :active,  des2, 2014-01-09, 3d
Tarea futura1                :         des3, after des2, 5d
Tarea futura2               :         des4, after des3, 5d
```

Hasta pronto,

Bruno

 

 


17 de diciembre de 2021

Elimina ficheros borrados del historial de git

Hola,

cuando trabajas sobre repositorios GitHub, como los de nuestro grupo, te puede pasar que en un momento dado agregas mediante commit ficheros de gran tamaño que finalmente no necesitas. Aunque luego los elimines con git rm esos ficheros quedan para siempre en la historia del repo y pueden hacer que clonarlo sea más pesado de lo que realmente necesitas. En esta entrada muestro una manera de eliminar este tipo de ficheros que a nosotros nos ha funcionado bien, basándonos en esta documentación.

1) Para empezar debes obtener la lista de ficheros y su tamaño del historial, deberás obtener el valor de $hash en cada caso:

ls  .git/objects/pack/pack-* 
#set hash=
git verify-pack -v  .git/objects/pack/pack-${hash}.idx | \
    sort -k 3 -n > packs

2) A continuación debes obtener los nombres y paths de esos ficheros:

perl -lane 'system("git rev-list --objects --all | \
    grep $F[0]")' packs > packs.log

3) Finalmente debes revisar packs.log y elegir qué ficheros o directorios quieres eliminar del historial. Debes asegurarte de que ya no los necesitas, porque después ya no podrás recuperarlos. Puede ser buena idea hacer una copia/fork del repositorio por seguridad.

4) Para eliminar, por ejemplo, una carpeta y su contenido, se hace así:

git filter-branch -f --index-filter \
    'git rm --cached --ignore-unmatch carpeta/*' \
    --tag-name-filter cat -- --all

5) Finalmente, para propagar estos cambios al repositorio remoto alojado en GitHub, se haría así:

git push origin --force --all

En posteriores clonados el repositorio será ya de menor tamaño.

Hasta pronto,

Bruno


8 de septiembre de 2021

Análisis de secuencias eficiente con SeqAn

Hola,

hoy he participado en un curso de introducción a SeqAn, una biblioteca Open Source escrita en lenguaje C++ para el análisis eficiente de secuencias biológicas, una tarea de la que ya habíamos hablado en este blog. La versión original se publicó en BMC Bioinformatics y ha evolucionado hasta la actual SeqAn3, que puede obtenerse en https://github.com/seqan/seqan3 y require un compilador g++ con versión >= 7 y el estándar C++17  (g++-7 -std=c++17).

Para programar tus propias aplicaciones deberás tener algo de conocimiento de C++ moderno, en concreto de rangos, funciones lambda y la STL, pero afortunadamente el material del curso es muy ameno y fácil de seguir. Lo puedes encontrar en:

https://seqan.github.io/learning-resources/doc/biocpp/presentation

 

Os dejo un ejemplo que permite filtrar lecturas de secuencia de un fichero FASTQ que superen un cierto umbral de calidad y require leer la documentación de la API

#include <string_view>
#include <seqan3/std/algorithm>
#include <seqan3/io/sequence_file/all.hpp>
#include <seqan3/alphabet/quality/all.hpp>

//ask user a PHRED quality cutoff value
auto ask_quality() -> seqan3::phred42
{
   std::cout<<" Please type read quality cutoff [0,41]\n";
   uint32_t cutoff{};
   std::cin>>cutoff;
        
   return seqan3::assign_rank_to( cutoff, seqan3::phred42{});
}

int main(int argc, const char * argv[])
{

   //note there's no user interface help nor proper arg checking
   std::string_view fastq_path = argv[1];
   std::string_view fasta_path = argv[2];

   // note file formats are deduced from file extensions
   seqan3::sequence_file_input fastq_file_in{fastq_path};
   seqan3::sequence_file_output fasta_file_out{fasta_path};

   // filter reads by quality
   seqan3::quality_alphabet qual_cutoff = ask_quality();
   
   // this is where you need ti understand ranges & lambda functions,
   // plus a little bit about the SeqAnAPI
   for (const auto & [sequence,id,quality] : fastq_file_in)
   {
      if (std::ranges::all_of(quality, [qual_cutoff] (auto const & quality) 
          { return quality >= qual_cutoff; }))
          fasta_file_out.emplace_back(sequence, id);
   }

   return 0;
}

Si te interesa, el próximo curso gratuito será el 14 de septiembre de 16:00 a 19:00 CEST (más información en https://ogy.de/ts51). Hasta pronto,

Bruno