Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/epassaro/miniconda3/envs/carsus/lib/python3.6/site-packages/tqdm/autonotebook/__init__.py:14: TqdmExperimentalWarning: Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)\n",
- " \" (e.g. in jupyter console)\", TqdmExperimentalWarning)\n"
- ]
- }
- ],
- "source": [
- "from sqlalchemy import create_engine, inspect\n",
- "from sqlalchemy.orm import Session\n",
- "from carsus.model import Level, DataSource # I don't know so much about the Carsus data model"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "engine = create_engine('sqlite:////home/epassaro/carsus-db/test_databases/test.db')\n",
- "connection = engine.connect()\n",
- "\n",
- "trans = connection.begin()\n",
- "session = Session(bind=connection)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "Table: atom\n",
- "Column: atomic_number\n",
- "Column: symbol\n",
- "Column: name\n",
- "Column: group\n",
- "Column: period\n",
- "\n",
- "Table: atom_quantity\n",
- "Column: _value\n",
- "Column: uncert\n",
- "Column: method\n",
- "Column: reference\n",
- "Column: atom_qty_id\n",
- "Column: atomic_number\n",
- "Column: type\n",
- "Column: data_source_id\n",
- "\n",
- "Table: data_source\n",
- "Column: data_source_id\n",
- "Column: short_name\n",
- "Column: name\n",
- "Column: description\n",
- "Column: data_source_quality\n",
- "\n",
- "Table: e_collision\n",
- "Column: e_col_id\n",
- "Column: bt92_ttype\n",
- "Column: bt92_cups\n",
- "\n",
- "Table: e_collision_qty\n",
- "Column: _value\n",
- "Column: uncert\n",
- "Column: method\n",
- "Column: reference\n",
- "Column: e_col_qty_id\n",
- "Column: e_col_id\n",
- "Column: type\n",
- "Column: data_source_id\n",
- "\n",
- "Table: e_collision_temp_strength\n",
- "Column: e_col_temp_strength_id\n",
- "Column: temp\n",
- "Column: strength\n",
- "Column: e_col_id\n",
- "\n",
- "Table: ion\n",
- "Column: atomic_number\n",
- "Column: ion_charge\n",
- "\n",
- "Table: ion_quantity\n",
- "Column: _value\n",
- "Column: uncert\n",
- "Column: method\n",
- "Column: reference\n",
- "Column: ion_qty_id\n",
- "Column: atomic_number\n",
- "Column: ion_charge\n",
- "Column: type\n",
- "Column: data_source_id\n",
- "\n",
- "Table: level\n",
- "Column: level_id\n",
- "Column: atomic_number\n",
- "Column: ion_charge\n",
- "Column: data_source_id\n",
- "Column: level_index\n",
- "Column: configuration\n",
- "Column: L\n",
- "Column: J\n",
- "Column: spin_multiplicity\n",
- "Column: parity\n",
- "Column: term\n",
- "\n",
- "Table: level_quantity\n",
- "Column: _value\n",
- "Column: uncert\n",
- "Column: method\n",
- "Column: reference\n",
- "Column: level_qty_id\n",
- "Column: level_id\n",
- "Column: type\n",
- "Column: data_source_id\n",
- "\n",
- "Table: line\n",
- "Column: line_id\n",
- "\n",
- "Table: line_quantity\n",
- "Column: _value\n",
- "Column: uncert\n",
- "Column: method\n",
- "Column: reference\n",
- "Column: line_qty_id\n",
- "Column: line_id\n",
- "Column: type\n",
- "Column: data_source_id\n",
- "Column: medium\n",
- "\n",
- "Table: temperature\n",
- "Column: id\n",
- "Column: value\n",
- "\n",
- "Table: transition\n",
- "Column: transition_id\n",
- "Column: type\n",
- "Column: lower_level_id\n",
- "Column: upper_level_id\n",
- "Column: data_source_id\n",
- "\n",
- "Table: zeta\n",
- "Column: id\n",
- "Column: atomic_number\n",
- "Column: ion_charge\n",
- "Column: zeta\n",
- "Column: temp_id\n",
- "Column: data_source_id\n"
- ]
- }
- ],
- "source": [
- "# Inspect the database\n",
- "inspector = inspect(engine)\n",
- "for table_name in inspector.get_table_names():\n",
- " print('\\nTable: %s' % table_name)\n",
- " for column in inspector.get_columns(table_name):\n",
- " print(\"Column: %s\" % column['name'])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Trying with nist-asd data source\n",
- "nist_ds = session.query(DataSource).filter(DataSource.short_name == 'nist-asd').one()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "subq = (\n",
- " session.\n",
- " query(Level.level_id).\n",
- " filter(Level.atomic_number.in_([4])).\n",
- " filter(Level.data_source_id == nist_ds.data_source_id)\n",
- " ).subquery()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [],
- "source": [
- "levels_data_q = (\n",
- " session.\n",
- " query(\n",
- " Level.level_id.label('level_id'),\n",
- " Level.atomic_number.label('atomic_number'),\n",
- " Level.ion_charge.label('ion_number'),\n",
- " Level.g.label('g'))\n",
- " ).join(subq,\n",
- " Level.level_id == subq.c.level_id\n",
- " )"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(7, 4, 0, 1), (8, 4, 1, 2), (9, 4, 2, 1), (10, 4, 3, 2)]"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "levels_data_q.all() # Seems ok"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Trying with chianti_v8.0.2 data source (the one used in the fixtures)\n",
- "ch_ds = session.query(DataSource).filter(DataSource.short_name == 'chianti_v8.0.2').one()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [],
- "source": [
- "subq = (\n",
- " session.\n",
- " query(Level.level_id).\n",
- " filter(Level.atomic_number.in_([4])).\n",
- " filter(Level.data_source_id == ch_ds.data_source_id)\n",
- " ).subquery()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [],
- "source": [
- "levels_data_q = (\n",
- " session.\n",
- " query(\n",
- " Level.level_id.label('level_id'),\n",
- " Level.atomic_number.label('atomic_number'),\n",
- " Level.ion_charge.label('ion_number'),\n",
- " Level.g.label('g'))\n",
- " ).join(subq,\n",
- " Level.level_id == subq.c.level_id\n",
- " )"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "levels_data_q.all()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [],
- "source": [
- "# subq for data source chianti_v8.0.2 gives an empty list -> this is the problem!"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.7"
- },
- "widgets": {
- "application/vnd.jupyter.widget-state+json": {
- "state": {},
- "version_major": 2,
- "version_minor": 0
- }
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement