L'histoire du rubyiste aux prises avec Python :: Dict data with pycall

L'histoire du rubyiste aux prises avec Python :: Dict data with pycall

Version PyCall Ruby Tips a un rapport de correspondance presque parfait. De plus, la notation spécifique à numpy

{.example}


#Accès à la dernière ligne m avec python[-1,:]Où écrire

Et ainsi de suite, rubyist a même une explication facile à comprendre de numpy.

Il semble que cela puisse être fait facilement. .. ..

Je suis désolé s'il s'agit d'une structure de données compliquée

Cependant, lorsqu'il s'agit de structures de données python complexes C'est très difficile. La cause est que je ne connais pas la clé de dict. C'est bien quand vous prenez des personnages simples, mais cela ne semble pas bien fonctionner avec des personnages légèrement compliqués.

Vasprun :: tdos ou dans pymatgen comme suit Vasprun :: compolete \ _dos etc. peut être pris.

cependant,

Si p spd \ _dos = dosrun.complete \ _dos.get \ _spd \ _dos ()

{<OrbitalType.s: 0>: <pymatgen.electronic_structure.dos.Dos object at 0x102dd4710>, <OrbitalType.p: 1>: <pymatgen.electronic_structure.dos.Dos object at 0x102dc2dd8>, <OrbitalType.d: 2>: <pymatgen.electronic_structure.dos.Dos object at 0x102d962b0>}

Est sortie. Je pense que cela peut être pris avec spd \ _dos ('OrbitalType.s') Pas bien. Donc,

p s_d = spd_dos.to_a[0][1].densities

Comme

{.example}


array([  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
         0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
...
      ])

Faites-le python :: array puis

s_list = PyCall::List.(s_d.to_a[0][1]).to_a

Comme, hash est défini sur array, vals est retiré et il est converti en une structure de données que ruby peut interpréter avec en \ _a.

Une fois que vous vous y serez habitué, vous n'aurez pas beaucoup de problèmes car le même code est répété, Peut-être que je l'oublierai avec le temps. Je veux que vous l'incorporiez dans lib, mais il semble que seuls les caractères lisent directement dict. .. .. Souhaitez-vous écrire un code et essayer pull req?

Si vous ne connaissez pas le nom des densités et de l'énergie, vous ne pouvez pas vous en empêcher. Cela peut être trouvé en lisant le code source de pymatgen. Apparemment, pour utiliser pycall, vous devez répéter cela.

{.ruby}


require 'pycall/import'
include PyCall::Import

pyimport :sys
pyimport 'numpy', as: :np
pyfrom 'pymatgen.io.vasp.outputs', import: :Vasprun

# dos
dosrun = Vasprun.("../dos_calc_fine/vasprun.xml")
e_object = (dosrun.tdos.energies - dosrun.efermi)
energy = PyCall::List.(e_object).to_a
spd_dos = dosrun.complete_dos.get_spd_dos()
spd = PyCall::Dict.(spd_dos)
s_d = spd.to_a[0][1].densities
s_list = PyCall::List.(s_d.to_a[0][1]).to_a
p_d = spd.to_a[1][1].densities
p_list = PyCall::List.(p_d.to_a[0][1]).to_a
d_d = spd.to_a[2][1].densities
d_list = PyCall::List.(d_d.to_a[0][1]).to_a
tdos = dosrun.tdos.densities
t_list = PyCall::List.(tdos.to_a[0][1]).to_a

require 'numo/gnuplot'
Numo.gnuplot do
  set yrange: '[-10:10]'
  plot [s_list, energy, w: :l, title: 's'],
  [p_list, energy, w: :l, title: 'p'],
  [d_list, energy, w: :l, title: 'd'],
  [t_list, energy, w: :l, title: 'total']
end

Recommended Posts

L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
L'histoire de la lecture des données HSPICE en Python
Essayez de gratter les données COVID-19 Tokyo avec Python
L'histoire de Python et l'histoire de NaN
[Homologie] Comptez le nombre de trous dans les données avec Python
Le 14 mars est le jour du rapport de circonférence. L'histoire du calcul du ratio de circonférence avec python
L'histoire de la création d'un pilote standard pour db avec python.
L'histoire de la création d'un module qui ignore le courrier avec python
Vérifier l'existence du fichier avec python
L'histoire de la manipulation des variables globales Python
Recommandation d'Altair! Visualisation des données avec Python
L'histoire du traitement A du blackjack (python)
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
L'histoire de l'apprentissage profond avec TPU
Préparer l'environnement d'exécution de Python3 avec Docker
[Note] Exportez le html du site avec python.
Calculez le nombre total de combinaisons avec python
Vérifiez la date du devoir de drapeau avec Python
Une histoire sur la gestion des données binaires en Python
Traitement d'image? L'histoire du démarrage de Python pour
Convertir le code de caractère du fichier avec Python3
[Python] Déterminez le type d'iris avec SVM
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Analyse de données avec python 2
le zen de Python
L'histoire de sys.path.append ()
Analyse de données avec Python
Extraire le tableau des fichiers image avec OneDrive et Python
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
L'histoire de l'arrêt du service de production avec la commande hostname
Apprenez Nim avec Python (dès le début de l'année).
L'histoire du partage de l'environnement pyenv avec plusieurs utilisateurs
Détruire l'expression intermédiaire de la méthode sweep avec Python
Visualisez la gamme d'insertions internes et externes avec python
L'histoire de FileNotFound en Python open () mode = 'w'
Calculer le coefficient de régression d'une analyse de régression simple avec python
Obtenez des résultats au format dict avec Python psycopg2
Défiez l'analyse des composants principaux des données textuelles avec Python
Ne pas être conscient du contenu des données en python
Utilisons les données ouvertes de "Mamebus" en Python
Résumé du flux de base de l'apprentissage automatique avec Python
Comprendre l'état de la perte de données - Python vs R
Obtenez l'état de fonctionnement de JR West avec Python
[Bases de la science des données] Collecte de données depuis RSS avec python
L'histoire de la conversion automatique du langage de TypeScript / JavaScript / Python
[Python Data Frame] Lorsque la valeur est vide, remplissez-la avec la valeur d'une autre colonne.
J'ai essayé de trouver l'entropie de l'image avec python
Exemple de données créées avec python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
L'histoire de la construction de Zabbix 4.4
Vers la retraite de Python2
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
Sakura L'histoire du fonctionnement de la bouteille Python sur Internet