2015-07-14 1 views
1

Avec le code minimal suivantTick et étiquettes dans Biopython

from Bio.Graphics import GenomeDiagram 
from Bio.SeqFeature import SeqFeature, FeatureLocation 

gdd = GenomeDiagram.Diagram('Construct Diagram') 
construct_track = gdd.new_track(1, scale=True, scale_format="SInt", scale_smalltick_interval=10, scale_largetick_interval=100, scale_ticks=True, start=0, end=2222) 
track_features = construct_track.new_set() 

feature = SeqFeature(FeatureLocation(50,100, strand=+1)) 
track_features.add_feature(feature, name="my feature name", label=True, label_angle=30) 

feature2 = SeqFeature(FeatureLocation(500,550, strand=-1)) 
track_features.add_feature(feature2, name="my feature name", label=True, label_angle=30) 

gdd.draw(format="linear", fragments=1, start=0, end=2222) 
gdd.write("test.png", "PNG") 

-je obtenir la figure suivante (hideuse):

enter image description here

Maintenant, l'aspect de la figure peut être modifié à ma satisfaction , avec deux exceptions notables:

  • Je ne peux pas définir les étiquettes d'échelle co Je ne peux pas faire en sorte que l'étiquette de ma deuxième caractéristique soit conforme à la façon dont la première caractéristique est étiquetée (actuellement pour 1Kbp et 2 Kbp - 1Kbp - je réglerais soit 1100 ou 1.1Kbp)
  • le texte est en côte vers le bas, et si je change l'angle à 210, il commence à étendre dans plutôt que vers l'extérieur de la piste (voir figure suivante)

enter image description here

pouvez-vous me aider?

Répondre

0

Voici quelques ressources:

http://biopython.org/DIST/docs/api/Bio.Graphics.GenomeDiagram._Track.Track-class.html http://biopython.org/DIST/docs/tutorial/Tutorial.html

Il semble qu'il y ait au moins deux options que vous pouvez jouer avec:

Tick étiquettes

  • Je ne peux pas définir correctement les étiquettes d'échelle (NTICE comment toutes les grandes tiques entre 1 kpb et 2 kbp lire juste « 1 kpb » - je régler soit pour 1100 ou 1.1Kbp)

Si vous faites scale_format=None dans l'appel à gdd.new_track() (ou tout simplement laisser cet argument out), vous obtenez 1100, etc.

étiquettes Feature

  • Je ne peux pas faire en sorte que l'étiquette de ma deuxième fonction soit conforme à la première étiquette (actuellement le texte est à l'envers, et si change l'angle en 210, il commence à s'étendre plutôt qu'à l'extérieur de la piste (voir figure suivante)

Vous pouvez passer label_position="end"-track_features.add_feature(). Si vous combinez cela avec un angle de 210, cela fera au moins en sorte qu'il ne s'étendra pas vers l'extérieur de la piste, bien qu'il remontera dans la zone verte ombrée. Peut-être que c'est acceptable pour vous.


Mettre ces deux ensemble dans votre exemple:

from Bio.Graphics import GenomeDiagram 
from Bio.SeqFeature import SeqFeature, FeatureLocation 

gdd = GenomeDiagram.Diagram('Construct Diagram') 
construct_track = gdd.new_track(1, scale=True, scale_format=None, scale_smalltick_interval=10, scale_largetick_interval=100, scale_ticks=True, start=0, end=2222) 
track_features = construct_track.new_set() 

feature = SeqFeature(FeatureLocation(50,100, strand=+1)) 
track_features.add_feature(feature, name="my feature name", label=True, label_angle=30) 

feature2 = SeqFeature(FeatureLocation(500,550, strand=-1)) 
track_features.add_feature(feature2, name="my feature name", label=True, label_angle=210, label_position="end") 

gdd.draw(format="linear", fragments=1, start=0, end=2222) 
gdd.write("test.png", "PNG") 
+0

Ce dernier des deux suggestions malheureusement encore pire que la solution actuelle. Savez-vous comment je pourrais le faire sortir de la piste (ce qui signifie plus loin vers le bas)? Aussi, s'il y a un tel choix, je préférerais des notations comme 1.1Kbp pour mon échelle plutôt que 1100. J'ai lu les docs, mais rien de tout cela n'est particulièrement évident. – TheChymera