L'histoire de la lecture des données HSPICE en Python

introduction

Ce que je voulais faire. Calcul matriciel pour lire les données nécessaires à partir de HSPICE et les utiliser pour l'apprentissage automatique.

Bibliothèque DeCiDa

J'ai trouvé une bibliothèque de simulateurs de circuits appelée DeCiDa qui fonctionne sur Python3. En utilisant cette bibliothèque, il est possible de faire fonctionner le simulateur de circuit directement à partir de DeCiDa, mais cette fois, il n'a été utilisé que pour la conversion de données.

Code

import numpy as np
from scipy import interpolate
from decida.Data import Data

d_sampling = 0.005
s_sampling = 0
e_sampling = 70

n_sampling = int((e_sampling - s_sampling)/d_sampling + 1)
time_r = np.linspace(s_sampling,e_sampling,n_sampling)

#read .tr0
d = Data()
d.read_hspice('xxx.tr0')
rows = d.nrows()
cols = d.ncols()

#delete unnecessary cols
leave_cols = [0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,42]
n_leave_cols = len(leave_cols)

for i in range( cols ):
    j = cols - i
    if not (j in leave_cols) :
        d.delete(j)
#d.delete( tuple of col_name )

#trans to numpy array
original_data = np.empty((n_leave_cols,rows))
for i in range(n_leave_cols):
    original_data[i] = d.get(i)

#delete rows which is not change TIME
k = np.zeros(rows-1)
for i in range(rows-1):
    j = rows-i-1
    if (original_data[0,j] <= original_data[0,j-1] ):
        original_data = np.delete(original_data,j,1)

# resamp
def resamp(y):
    f = interpolate.interp1d(original_data[0], y, kind='linear')
    return f(time_r)

r_data = np.empty((n_leave_cols,n_sampling))
r_data[0] = time_r
r_data[1:] = resamp(original_data[1:])

np.save('rData.npy',r_data)

Description du code

Il est possible de lire le résultat de la simulation HSPICE sur Python avec la classe Data de DeCiDa.

variable

・ S_sampling, e_sampling Heure de début et heure de fin de la simulation dans Spice. ・ Échantillonnage D Intervalle d'échantillonnage au moment de la lecture.

Lecture des données

d = Data() Les données peuvent être stockées dans d avec d.read_hspice ('xxx.xxx'). Il existe également des méthodes prenant en charge CSV et NGSpice.

Effacez les données inutiles

Je pense qu'il existe un tableau de données qui n'est pas nécessaire pour le calcul, d.delete(col) Peut être effacé avec. col peut être spécifié sous forme de valeur entière ou de nom de colonne. Vous pouvez effacer plusieurs en passant un taple. (J'avais les noms de colonnes à conserver cette fois, donc je les ai supprimés un par un)

Vous pouvez obtenir le numéro de colonne à partir du nom de la colonne avec d.index ("zzz").

Convertir en tableau Numpy

Il est disponible sur d.get (col). Il semble que vous pouvez le faire sans utiliser la phrase for ……. Il semble qu'il puisse être intégré avec la gomme de données inutile dans le chapitre ci-dessus ...

Rééchantillonnage

Étant donné que l'axe des temps des données Spice n'est pas uniformément espacé, le rééchantillonnage est effectué avec l'interpolation de SciPy. Cependant, si les données de temps sont embuées, le rééchantillonnage ne peut pas être effectué, donc l'effacement est effectué.

Ensuite, il a été complété et enregistré de manière linéaire en tant que données Numpy.

Résumé

J'ai expliqué le code pour convertir le simulateur de circuit analogique et les données Python. Actuellement, Spice est tourné séparément et les données sont lues à partir du résultat, mais comme DeCiDa lui-même a une méthode pour faire fonctionner Spice, j'aimerais envisager d'améliorer l'efficacité en l'utilisant.

Recommended Posts

L'histoire de la lecture des données HSPICE en Python
Utilisons les données ouvertes de "Mamebus" en Python
L'histoire de Python et l'histoire de NaN
L'histoire de la participation à AtCoder
L'histoire du "trou" dans le fichier
Essayez de gratter les données COVID-19 Tokyo avec Python
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
[Homologie] Comptez le nombre de trous dans les données avec Python
Vérifiez le comportement du destroyer en Python
L'histoire d'une erreur dans PyOCR
Le résultat de l'installation de python sur Anaconda
L'histoire de la manipulation des variables globales Python
Principes de base pour exécuter NoxPlayer en Python
À la recherche du FizzBuzz le plus rapide en Python
L'histoire du traitement A du blackjack (python)
Sortie du nombre de cœurs de processeur en Python
L'histoire selon laquelle le coût d'apprentissage de Python est faible
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Récupérer l'appelant d'une fonction en Python
Faites correspondre la distribution de chaque groupe en Python
Afficher le résultat du traitement de la géométrie en Python
le zen de Python
Copiez la liste en Python
Visualisation en temps réel des données thermographiques AMG8833 en Python
L'histoire de sys.path.append ()
Découvrez la fraction de la valeur saisie en python
Traitement d'image? L'histoire du démarrage de Python pour
L'histoire de la recherche du n optimal dans N poing
Trouvez la solution de l'équation d'ordre n avec python
[Note] À propos du rôle du trait de soulignement "_" en Python
Résolution d'équations de mouvement en Python (odeint)
Sortie sous la forme d'un tableau python
L'histoire de l'affichage des fichiers multimédias dans Django
Lecture de code de faker, une bibliothèque qui génère des données de test en Python
Environnement enregistré pour l'analyse des données avec Python
Obtenez la clé pour la migration de la deuxième couche de données JSON avec python
Histoire de base de l'héritage en Python (pour les débutants)
Découvrez la bonne efficacité de calcul de la vectorisation en Python
Résumé des outils nécessaires pour analyser les données en Python
Traitement pleine largeur et demi-largeur des données CSV en Python
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
Comment obtenir le nombre de chiffres en Python
L'histoire de la création de l'environnement Linux le plus rapide au monde
À propos de l'inefficacité du transfert de données dans luigi on-memory
Apprenez le modèle de conception «Chaîne de responsabilité» en Python
Implémenter la solution de l'algèbre de Riccati en Python
Reproduire l'exemple d'exécution du chapitre 4 de Hajipata en Python
Implémentation de l'algorithme "Algorithm Picture Book" en Python3 (Heap Sort Edition)
[Python] Affiche toutes les combinaisons d'éléments de la liste
Comprendre l'état de la perte de données - Python vs R
Obtenez l'URL de la destination de la redirection HTTP en Python
Un mémorandum sur la mise en œuvre des recommandations en Python
L'histoire de la conversion automatique du langage de TypeScript / JavaScript / Python
Reproduire l'exemple d'exécution du chapitre 5 de Hajipata en Python
Pour faire l'équivalent de Ruby ObjectSpace._id2ref en Python
Vérifiez la nature atrophique de la distribution de probabilité en Python