final presentation, restructure of the repository, updated code to have weighted probabilities and more

This commit is contained in:
Tom
2026-07-24 17:33:59 +02:00
parent c129ba7206
commit 1a4e53b30a
20 changed files with 3290 additions and 2969 deletions

View File

@@ -2,10 +2,10 @@ FROM python:3.14-slim
WORKDIR /app
COPY ./main.py /app
COPY ./simulator.py /app
COPY ./requirements.txt /app
COPY requirements.txt /app/
RUN pip install -r requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY main.py simulator.py /app/
CMD ["python", "main.py"]

View File

@@ -30,18 +30,6 @@ def Continue(title="") -> None:
print()
# def MainMenu() -> None:
# global currentFunction
# options = ["Simulator", "Calculator", "Quit"]
# actions: list[Callable[[], None]] = [SimulatorMenu, StopApplication]
# selectedIndex = ShowMenu(
# options, title="Boolean Network Simulator\nby Tom Zuidberg"
# )
# currentFunction = actions[selectedIndex]
def StopApplication() -> None:
quit()
@@ -151,11 +139,14 @@ def BooleanNetworkMenu(
functionStrings: list = [None for _ in range(3)]
functionsDirtyFlag = False
current_highlight = 0
functions_highlight = 0
probFunctionStrings: list[list[str]] = [[] for _ in range(3)]
if bn is not None and funcStrings is not None and funcs is not None:
boolNetwork = bn
functions = funcs
functionStrings = funcStrings
probFunctionStrings = [[] for _ in range(boolNetwork.size)]
def Menu() -> None:
nonlocal current_highlight
@@ -164,10 +155,7 @@ def BooleanNetworkMenu(
f"Set size (current: {boolNetwork.size}) WARNING: this will reset all other options!",
f"Set state (current: {str(boolNetwork)[-boolNetwork.size :]})",
f"Set update scheme (current: {boolNetwork.updateScheme})",
*[
f"Set update function of node x{i} (current: {functionStrings[i - 1]})"
for i in range(1, boolNetwork.size + 1)
],
"Edit update functions",
None,
"Update once (hold ENTER for continuous updates)",
"Update multiple times",
@@ -182,7 +170,7 @@ def BooleanNetworkMenu(
SetSizeHelper,
SetStateHelper,
SetUpdateSchemeHelper,
*[partial(SetFunctionHelper, i) for i in range(boolNetwork.size)],
FunctionsMenu,
None,
UpdateHelper,
MultiUpdateHelper,
@@ -204,7 +192,7 @@ def BooleanNetworkMenu(
actions[selectedIndex]()
def SetSizeHelper() -> None:
nonlocal boolNetwork, functions, functionStrings
nonlocal boolNetwork, functions, functionStrings, probFunctionStrings
while True:
size = input("Set new size (Leave empty to cancel):\n").strip()
if size == "":
@@ -219,6 +207,7 @@ def BooleanNetworkMenu(
boolNetwork = BooleanNetwork(size)
functions = [None for _ in range(size)]
functionStrings = [None for _ in range(size)]
probFunctionStrings = [[] for _ in range(size)]
return
def SetStateHelper() -> None:
@@ -237,9 +226,32 @@ def BooleanNetworkMenu(
print("Invalid input:", e)
def SetUpdateSchemeHelper() -> None:
nonlocal boolNetwork
nonlocal boolNetwork, functions, functionStrings, functionsDirtyFlag
def AdoptFromProbabilistic() -> None:
nonlocal functionsDirtyFlag
for i in range(boolNetwork.size):
if probFunctionStrings[i]:
funcString = probFunctionStrings[i][0]
func = eval(
"lambda "
+ ",".join(f"x{j}" for j in range(1, boolNetwork.size + 1))
+ ":"
+ funcString
)
functions[i] = func
functionStrings[i] = funcString
functionsDirtyFlag = True
def SwitchToSynchronous() -> None:
wasProbabilistic = boolNetwork.updateScheme == "probabilistic"
boolNetwork.UseSynchronousScheme()
if wasProbabilistic:
AdoptFromProbabilistic()
def SetSequentialHelper() -> None:
wasProbabilistic = boolNetwork.updateScheme == "probabilistic"
while True:
seq = input(
"Set sequence. (Leave empty to cancel)\nFormat example: '1,4,3,2'\n"
@@ -252,26 +264,24 @@ def BooleanNetworkMenu(
try:
seq = [int(i) for i in seq]
boolNetwork.UseSequentialScheme(seq)
if wasProbabilistic:
AdoptFromProbabilistic()
return
except Exception as e:
print("Invalid input:", e)
def SetProbabilisticHelper() -> None:
while True:
chance = input(
"Set flip chance as float between 0.0 and 1.0. (Leave empty to cancel)\n"
).strip()
if chance == "":
print("Cancelled")
return
def SwitchToAsyncRandom() -> None:
wasProbabilistic = boolNetwork.updateScheme == "probabilistic"
boolNetwork.UseAsynchronousRandomScheme()
if wasProbabilistic:
AdoptFromProbabilistic()
try:
chance = float(chance)
boolNetwork.UseProbabilisticScheme(chance)
return
except Exception as e:
print("Invalid input:", e)
def SwitchToProbabilistic() -> None:
for i in range(boolNetwork.size):
if not probFunctionStrings[i] and functions[i] is not None:
boolNetwork.AddProbabilisticFunction(i, functions[i], 1.0)
probFunctionStrings[i].append(functionStrings[i])
boolNetwork.UseProbabilisticScheme()
title = "Select update scheme:"
options = [
@@ -282,15 +292,120 @@ def BooleanNetworkMenu(
"Cancel",
]
actions = [
lambda: boolNetwork.UseSynchronousScheme(),
SwitchToSynchronous,
SetSequentialHelper,
SetProbabilisticHelper,
lambda: boolNetwork.UseAsynchronousRandomScheme(),
SwitchToProbabilistic,
SwitchToAsyncRandom,
lambda: None,
]
actions[ShowMenu(options=options, title=title)]()
def FunctionsMenu() -> None:
nonlocal functions_highlight
done: bool = False
def Menu() -> None:
nonlocal functions_highlight
title = "Edit update functions:"
deleteTargets: list = []
if boolNetwork.updateScheme in ("synchronous", "sequential", None):
options = [
*[
f"Set update function of node x{i} (current: {functionStrings[i - 1]})"
for i in range(1, boolNetwork.size + 1)
],
None,
"Return",
]
actions = [
*[partial(SetFunctionHelper, i) for i in range(boolNetwork.size)],
None,
ReturnHelper,
]
elif boolNetwork.updateScheme == "asynchronous_random":
options = [
*[
f"Set update function of node x{i} (current: {functionStrings[i - 1]})"
for i in range(1, boolNetwork.size + 1)
],
None,
*[
f"Set selection weight of node x{i} (current: {boolNetwork.node_selection_weights[i - 1]})"
for i in range(1, boolNetwork.size + 1)
],
None,
"Return",
]
actions = [
*[partial(SetFunctionHelper, i) for i in range(boolNetwork.size)],
None,
*[partial(SetNodeWeightHelper, i) for i in range(boolNetwork.size)],
None,
ReturnHelper,
]
else: # probabilistic
title = "Edit update functions:\n(highlight a function entry and press 'd' to delete it)"
options = []
actions = []
for i in range(boolNetwork.size):
for j in range(len(probFunctionStrings[i])):
options.append(
f"Set update function #{j + 1} of node x{i + 1} (current: {probFunctionStrings[i][j]})"
)
actions.append(partial(EditProbFunctionHelper, i, j))
deleteTargets.append((i, j))
options.append(
f"Set weight of function #{j + 1} of node x{i + 1} (current: {boolNetwork.probabilistic_weights[i][j]})"
)
actions.append(partial(EditProbWeightHelper, i, j))
deleteTargets.append(None)
options.append(f"Add new function for node x{i + 1}")
actions.append(partial(AddProbFunctionHelper, i))
deleteTargets.append(None)
options.append(None)
actions.append(None)
deleteTargets.append(None)
options.append("Return")
actions.append(ReturnHelper)
deleteTargets.append(None)
if boolNetwork.updateScheme == "probabilistic":
menu = TerminalMenu(
menu_entries=options,
title=title,
multi_select=False,
cursor_index=functions_highlight,
accept_keys=("enter", "d"),
)
selectedIndex = menu.show()
if selectedIndex is None:
selectedIndex = len(options) - 1
acceptKey = "enter"
else:
acceptKey = menu.chosen_accept_key
functions_highlight = selectedIndex
if acceptKey == "d" and deleteTargets[selectedIndex] is not None:
DeleteProbFunctionHelper(*deleteTargets[selectedIndex])
else:
actions[selectedIndex]()
return
selectedIndex = ShowMenu(
options=options, title=title, highlight_entry=functions_highlight
)
functions_highlight = selectedIndex
actions[selectedIndex]()
def ReturnHelper() -> None:
nonlocal done
done = True
while not done:
Menu()
def UpdateHelper() -> None:
nonlocal functions, boolNetwork, functionsDirtyFlag
if functionsDirtyFlag:
@@ -377,6 +492,115 @@ def BooleanNetworkMenu(
except Exception as e:
print("Error while parsing function:", e)
def SetNodeWeightHelper(index: int) -> None:
nonlocal boolNetwork
while True:
weight = input(
f"Set new selection weight for node x{index + 1}. Must be a positive number. (Leave empty to cancel)\n"
).strip()
if weight == "":
print("Cancelled")
return
try:
weight = float(weight)
boolNetwork.SetNodeSelectionWeight(index, weight)
return
except Exception as e:
print("Invalid input:", e)
def AddProbFunctionHelper(index: int) -> None:
nonlocal boolNetwork, probFunctionStrings
while True:
funcString = input(
f"Set new function for node x{index + 1}. The function will receive all nodes in form of x1, x2, ..., x[size]. (Leave empty to cancel)\n"
)
if funcString == "":
print("Cancelled")
return
try:
func = (
"lambda "
+ ",".join(f"x{i}" for i in range(1, boolNetwork.size + 1))
+ ":"
+ funcString
)
func = eval(func)
if not isinstance(func, FunctionType):
print("Please enter a valid function. Got: " + func)
continue
except Exception as e:
print("Error while parsing function:", e)
continue
weight = 1.0
weightInput = input(
"Set weight for this function. Must be a positive number. (Leave empty for default 1.0)\n"
).strip()
if weightInput != "":
try:
weight = float(weightInput)
except ValueError:
print("Invalid weight, using default 1.0")
weight = 1.0
try:
boolNetwork.AddProbabilisticFunction(index, func, weight)
probFunctionStrings[index].append(funcString)
return
except Exception as e:
print("Error while adding function:", e)
def EditProbFunctionHelper(index: int, function_index: int) -> None:
nonlocal boolNetwork, probFunctionStrings
while True:
funcString = input(
f"Set new function for node x{index + 1}, function #{function_index + 1}. (Leave empty to cancel)\n"
)
if funcString == "":
print("Cancelled")
return
try:
func = (
"lambda "
+ ",".join(f"x{i}" for i in range(1, boolNetwork.size + 1))
+ ":"
+ funcString
)
func = eval(func)
if not isinstance(func, FunctionType):
print("Please enter a valid function. Got: " + func)
continue
boolNetwork.SetProbabilisticFunction(index, function_index, func)
probFunctionStrings[index][function_index] = funcString
return
except Exception as e:
print("Error while parsing function:", e)
def EditProbWeightHelper(index: int, function_index: int) -> None:
nonlocal boolNetwork
while True:
weight = input(
f"Set new weight for node x{index + 1}, function #{function_index + 1}. Must be a positive number. (Leave empty to cancel)\n"
).strip()
if weight == "":
print("Cancelled")
return
try:
weight = float(weight)
boolNetwork.SetProbabilisticFunctionWeight(index, function_index, weight)
return
except Exception as e:
print("Invalid input:", e)
def DeleteProbFunctionHelper(index: int, function_index: int) -> None:
nonlocal boolNetwork, probFunctionStrings
try:
boolNetwork.RemoveProbabilisticFunction(index, function_index)
del probFunctionStrings[index][function_index]
except Exception as e:
print("Error while deleting function:", e)
Continue()
def ToggleWriteToFileHelper():
nonlocal writeToFile
writeToFile = not writeToFile

View File

@@ -7,6 +7,19 @@ import numpy as np
import scipy.linalg
def _wrap_bool_function(
function: Callable[Concatenate[bool, ...], bool],
) -> Callable[Concatenate[bool, ...], bool]:
def wrap(*args, **kwargs) -> bool:
result = function(*args, **kwargs)
assert type(result) is bool, (
f"Function error: Boolean network functions must always return a bool, however got type {type(result)}, {result=}"
)
return result
return wrap
class BooleanNetwork:
def __init__(self, size: int) -> None:
assert type(size) is int and size > 0, (
@@ -17,8 +30,7 @@ class BooleanNetwork:
self.__has_update_functions = False
self.__has_update_scheme = False
self.__has_sequence = False
self.__has_flip_chance = False
self.flip_chance: float = 0
self.__has_probabilistic_functions = False
self.sequence: list[int] = list()
self.seed: int | None = None
self.time_step = 0
@@ -29,21 +41,23 @@ class BooleanNetwork:
lambda x: x for _ in range(size)
]
# asynchronous_random: relative likelihood that node i is the one picked
# to update on a given time step. Doesn't need to sum to 1 - it is
# normalised (weight_i / sum(weights)) whenever it is used.
self.node_selection_weights: list[float] = [1.0 for _ in range(size)]
# probabilistic: each node may have any number of candidate update
# functions. On every update, one candidate per node is drawn
# according to its weight (again normalised at use-time, not
# required to sum to 1) and applied synchronously.
self.probabilistic_functions: list[
list[Callable[Concatenate[bool, ...], bool]]
] = [list() for _ in range(size)]
self.probabilistic_weights: list[list[float]] = [list() for _ in range(size)]
def SetFunctions(
self, functions: Iterable[Callable[Concatenate[bool, ...], bool]]
) -> Self:
def wrapper(
function: Callable[Concatenate[bool, ...], bool],
) -> Callable[Concatenate[bool, ...], bool]:
def wrap(*args, **kwargs) -> bool:
result = function(*args, **kwargs)
assert type(result) is bool, (
f"Function error: Boolean network functions must always return a bool, however got type {type(result)}, {result=}"
)
return result
return wrap
funcs: list[Callable[Concatenate[bool, ...], bool]] = list(functions)
assert len(funcs) == self.size, (
@@ -56,7 +70,7 @@ class BooleanNetwork:
f"Function error: Function arg amount mismatch. Given function takes {len(inspect.signature(func).parameters)} arguments, expected {self.size}"
)
self.functions[i] = wrapper(func)
self.functions[i] = _wrap_bool_function(func)
self.__has_update_functions = True
return self
@@ -64,22 +78,101 @@ class BooleanNetwork:
def SetFunction(
self, index: int, function: Callable[Concatenate[bool, ...], bool]
) -> Self:
def wrapper(
function: Callable[Concatenate[bool, ...], bool],
) -> Callable[Concatenate[bool, ...], bool]:
def wrap(*args, **kwargs) -> bool:
result = function(*args, **kwargs)
assert type(result) is bool, (
f"Function error: Boolean network functions must always return a bool, however got type {type(result)}, {result=}"
)
return result
return wrap
assert 0 <= index < self.size, (
f"Function error: cannot set function at index {index} - out of bound."
)
self.functions[index] = wrapper(function)
assert len(inspect.signature(function).parameters) == self.size, (
f"Function error: Function arg amount mismatch. Given function takes {len(inspect.signature(function).parameters)} arguments, expected {self.size}"
)
self.functions[index] = _wrap_bool_function(function)
return self
def SetNodeSelectionWeight(self, index: int, weight: float) -> Self:
assert 0 <= index < self.size, (
f"Weight error: cannot set selection weight at index {index} - out of bound."
)
assert type(weight) is float and weight > 0, (
f"Weight error: weight must be a positive float. got {weight=}"
)
self.node_selection_weights[index] = weight
return self
def AddProbabilisticFunction(
self,
index: int,
function: Callable[Concatenate[bool, ...], bool],
weight: float = 1.0,
) -> Self:
assert 0 <= index < self.size, (
f"Function error: cannot add function at index {index} - out of bound."
)
assert len(inspect.signature(function).parameters) == self.size, (
f"Function error: Function arg amount mismatch. Given function takes {len(inspect.signature(function).parameters)} arguments, expected {self.size}"
)
assert type(weight) is float and weight > 0, (
f"Weight error: weight must be a positive float. got {weight=}"
)
self.probabilistic_functions[index].append(_wrap_bool_function(function))
self.probabilistic_weights[index].append(weight)
self.__has_probabilistic_functions = all(
len(functions) > 0 for functions in self.probabilistic_functions
)
return self
def SetProbabilisticFunction(
self,
index: int,
function_index: int,
function: Callable[Concatenate[bool, ...], bool],
) -> Self:
assert 0 <= index < self.size, (
f"Function error: cannot set function at index {index} - out of bound."
)
assert 0 <= function_index < len(self.probabilistic_functions[index]), (
f"Function error: node {index} has no function at position {function_index}."
)
assert len(inspect.signature(function).parameters) == self.size, (
f"Function error: Function arg amount mismatch. Given function takes {len(inspect.signature(function).parameters)} arguments, expected {self.size}"
)
self.probabilistic_functions[index][function_index] = _wrap_bool_function(
function
)
return self
def SetProbabilisticFunctionWeight(
self, index: int, function_index: int, weight: float
) -> Self:
assert 0 <= index < self.size, (
f"Weight error: cannot set weight at index {index} - out of bound."
)
assert 0 <= function_index < len(self.probabilistic_weights[index]), (
f"Weight error: node {index} has no function at position {function_index}."
)
assert type(weight) is float and weight > 0, (
f"Weight error: weight must be a positive float. got {weight=}"
)
self.probabilistic_weights[index][function_index] = weight
return self
def RemoveProbabilisticFunction(self, index: int, function_index: int) -> Self:
assert 0 <= index < self.size, (
f"Function error: cannot remove function at index {index} - out of bound."
)
assert 0 <= function_index < len(self.probabilistic_functions[index]), (
f"Function error: node {index} has no function at position {function_index}."
)
assert len(self.probabilistic_functions[index]) > 1, (
f"Function error: node {index} must keep at least one probabilistic function."
)
del self.probabilistic_functions[index][function_index]
del self.probabilistic_weights[index][function_index]
self.__has_probabilistic_functions = all(
len(functions) > 0 for functions in self.probabilistic_functions
)
return self
def UseSynchronousScheme(self) -> Self:
@@ -127,16 +220,9 @@ class BooleanNetwork:
self.__has_update_scheme = True
return self
def UseProbabilisticScheme(self, flip_chance: float) -> Self:
if flip_chance is not None:
assert type(flip_chance) is float, (
f"Probabilistic error: given flip_chance is not a float: got {flip_chance}"
)
self.flip_chance = flip_chance
def UseProbabilisticScheme(self) -> Self:
self.updateScheme = "probabilistic"
self.__has_update_scheme = True
self.__has_flip_chance = True
return self
def __synchronous_update(self) -> None:
@@ -150,15 +236,21 @@ class BooleanNetwork:
self.nodes[i] = self.functions[i](*self.nodes)
def __asynchronous_random_update(self) -> None:
index = random.randrange(0, self.size)
index = random.choices(
range(self.size), weights=self.node_selection_weights, k=1
)[0]
self.nodes[index] = self.functions[index](*self.nodes)
def __probabilistic_update(self) -> None:
self.__synchronous_update()
temp = list()
for i in range(self.size):
rng = random.random()
if rng <= self.flip_chance:
self.nodes[i] = not self.nodes[i]
chosen = random.choices(
self.probabilistic_functions[i],
weights=self.probabilistic_weights[i],
k=1,
)[0]
temp.append(chosen(*self.nodes))
self.nodes = temp
def SetState(self, state: str | list[bool] | tuple[bool, ...]) -> Self:
assert isinstance(state, (str, list, tuple)), (
@@ -192,7 +284,9 @@ class BooleanNetwork:
assert type(n) is int and n >= 0, (
f"Update error: amount of updates must be an integer and positive. got {n=}"
)
assert self.__has_update_functions, "Update error: no update functions defined"
assert self.updateScheme == "probabilistic" or self.__has_update_functions, (
"Update error: no update functions defined"
)
assert self.__has_update_scheme, "Update error: no update scheme defined"
assert type(verbose) is bool, "Update error: verbose must be a bool"
assert type(writeToFile) is bool, "Update error: writeToFile must be a bool"
@@ -208,7 +302,9 @@ class BooleanNetwork:
case "asynchronous_random":
selected_update = self.__asynchronous_random_update
case "probabilistic":
assert self.__has_flip_chance, "Update error: no flip_chance defined"
assert self.__has_probabilistic_functions, (
"Update error: no probabilistic functions defined for every node"
)
selected_update = self.__probabilistic_update
case _:
raise Exception("Update error: update scheme selection went wrong")
@@ -261,36 +357,37 @@ class BooleanNetwork:
matrix: np.ndarray = np.zeros((dimension, dimension))
if self.updateScheme == "probabilistic":
flipChance = self.flip_chance
self.UseSynchronousScheme()
for i, state in enumerate(product((False, True), repeat=self.size)):
self.SetState(state)
self.Update()
for flips in product((False, True), repeat=self.size):
flipped = int(
"".join(
str(
int(
self.nodes[j] if not flips[j] else not self.nodes[j]
)
)
for j in range(self.size)
),
2,
)
choice_ranges = [
range(len(self.probabilistic_functions[n]))
for n in range(self.size)
]
for combo in product(*choice_ranges):
prob = np.float64(1)
for flip in flips:
prob *= flipChance if flip else 1 - flipChance
matrix[i][flipped] = prob
self.UseProbabilisticScheme(flipChance)
result: list[bool] = []
for n in range(self.size):
weights = self.probabilistic_weights[n]
total_weight = sum(weights)
chosen_index = combo[n]
prob *= weights[chosen_index] / total_weight
result.append(
self.probabilistic_functions[n][chosen_index](*state)
)
result_index = int(
"".join(str(int(b)) for b in result), 2
)
matrix[i][result_index] += prob
return matrix
if self.updateScheme == "asynchronous_random":
total_weight = sum(self.node_selection_weights)
for i, state in enumerate(product((False, True), repeat=self.size)):
for j in range(self.size):
self.SetState(state)
self.nodes[j] = self.functions[j](*self.nodes)
matrix[i][int(self.state, 2)] += np.float64(1) / self.size
matrix[i][int(self.state, 2)] += (
np.float64(self.node_selection_weights[j]) / total_weight
)
return matrix
for i, state in enumerate(product((False, True), repeat=self.size)):

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 227 KiB

After

Width:  |  Height:  |  Size: 227 KiB

View File

@@ -1,447 +1,447 @@
IEEEabrv.bib
V1.12 (2007/01/11)
Copyright (c) 2002-2007 by Michael Shell
See: http://www.michaelshell.org/
for current contact information.
BibTeX bibliography string definitions of the ABBREVIATED titles of
IEEE journals and magazines and online publications.
This file is designed for bibliography styles that require
abbreviated titles and is not for use in bibliographies that
require full-length titles.
Support sites:
http://www.michaelshell.org/tex/ieeetran/
http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
and/or
http://www.ieee.org/
Special thanks to Laura Hyslop and ken Rawson of IEEE for their help
in obtaining the information needed to compile this file. Also,
Volker Kuhlmann and Moritz Borgmann kindly provided some corrections
and additions.
*************************************************************************
Legal Notice:
This code is offered as-is without any warranty either expressed or
implied; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE!
User assumes all risk.
In no event shall IEEE or any contributor to this code be liable for
any damages or losses, including, but not limited to, incidental,
consequential, or any other damages, resulting from the use or misuse
of any information contained here.
All comments are the opinions of their respective authors and are not
necessarily endorsed by the IEEE.
This work is distributed under the LaTeX Project Public License (LPPL)
( http://www.latex-project.org/ ) version 1.3, and may be freely used,
distributed and modified. A copy of the LPPL, version 1.3, is included
in the base LaTeX documentation of all distributions of LaTeX released
2003/12/01 or later.
Retain all contribution notices and credits.
** Modified files should be clearly indicated as such, including **
** renaming them and changing author support contact information. **
File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
*************************************************************************
USAGE:
\bibliographystyle{mybstfile}
\bibliography{IEEEabrv,mybibfile}
where the IEEE titles in the .bib database entries use the strings
defined here. e.g.,
journal = IEEE_J_AC,
to yield "{IEEE} Trans. Automat. Contr."
IEEE uses abbreviated journal titles in their bibliographies -
this file is suitable for work that is to be submitted to the IEEE.
For work that requires full-length titles, you should use the full
titles provided in the companion file, IEEEfull.bib.
** NOTES **
1. Journals have been grouped according to subject in order to make it
easier to locate and extract the definitions for related journals -
as most works use references that are confined to a single topic.
Magazines are listed in straight alphabetical order.
2. String names are closely based on IEEE's own internal acronyms.
3. Abbreviations follow IEEE's style.
4. Older, out-of-print IEEE titles are included (but not including titles
dating prior to IEEE's formation from the IRE and AIEE in 1963).
5. The following NEW/current journal definitions have been disabled because
their abbreviations have not yet been verified:
STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biology Bioinformatics"}
STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."}
STRING{IEEE_J_DSC = "{IEEE} Trans. Dependable Secure Comput."}
STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"}
6. The following OLD journal definitions have been disabled because
their abbreviations have not yet been found/verified:
STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"}
STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"}
If you know what the proper abbreviation is for a string in #5 or #6 above,
email me and I will correct them in the next release.
IEEE Journals
aerospace and military
@STRING{IEEE_J_AES = "{IEEE} Trans. Aerosp. Electron. Syst."}
@STRING{IEEE_J_ANE = "{IEEE} Trans. Aerosp. Navig. Electron."}
@STRING{IEEE_J_ANNE = "{IEEE} Trans. Aeronaut. Navig. Electron."}
@STRING{IEEE_J_AS = "{IEEE} Trans. Aerosp."}
@STRING{IEEE_J_AIRE = "{IEEE} Trans. Airborne Electron."}
@STRING{IEEE_J_MIL = "{IEEE} Trans. Mil. Electron."}
autos, transportation and vehicles (non-aerospace)
@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transp. Syst."}
@STRING{IEEE_J_VT = "{IEEE} Trans. Veh. Technol."}
@STRING{IEEE_J_VC = "{IEEE} Trans. Veh. Commun."}
circuits, signals, systems, audio and controls
@STRING{IEEE_J_SPL = "{IEEE} Signal Process. Lett."}
@STRING{IEEE_J_ASSP = "{IEEE} Trans. Acoust., Speech, Signal Process."}
@STRING{IEEE_J_AU = "{IEEE} Trans. Audio"}
@STRING{IEEE_J_AUEA = "{IEEE} Trans. Audio Electroacoust."}
@STRING{IEEE_J_AC = "{IEEE} Trans. Autom. Control"}
@STRING{IEEE_J_CAS = "{IEEE} Trans. Circuits Syst."}
@STRING{IEEE_J_CASVT = "{IEEE} Trans. Circuits Syst. Video Technol."}
@STRING{IEEE_J_CASI = "{IEEE} Trans. Circuits Syst. {I}"}
@STRING{IEEE_J_CASII = "{IEEE} Trans. Circuits Syst. {II}"}
in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively.
@STRING{IEEE_J_CASI_RP = "{IEEE} Trans. Circuits Syst. {I}"}
@STRING{IEEE_J_CASII_EB = "{IEEE} Trans. Circuits Syst. {II}"}
@STRING{IEEE_J_CT = "{IEEE} Trans. Circuit Theory"}
@STRING{IEEE_J_CST = "{IEEE} Trans. Control Syst. Technol."}
@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Process."}
@STRING{IEEE_J_SU = "{IEEE} Trans. Sonics Ultrason."}
@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Process."}
@STRING{IEEE_J_UE = "{IEEE} Trans. Ultrason. Eng."}
@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelectr., Freq. Control"}
communications
@STRING{IEEE_J_COML = "{IEEE} Commun. Lett."}
@STRING{IEEE_J_JSAC = "{IEEE} J. Sel. Areas Commun."}
@STRING{IEEE_J_COM = "{IEEE} Trans. Commun."}
@STRING{IEEE_J_COMT = "{IEEE} Trans. Commun. Technol."}
@STRING{IEEE_J_WCOM = "{IEEE} Trans. Wireless Commun."}
components, packaging and manufacturing
@STRING{IEEE_J_ADVP = "{IEEE} Trans. Adv. Packag."}
@STRING{IEEE_J_CHMT = "{IEEE} Trans. Compon., Hybrids, Manuf. Technol."}
@STRING{IEEE_J_CPMTA = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {A}"}
@STRING{IEEE_J_CPMTB = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {B}"}
@STRING{IEEE_J_CPMTC = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {C}"}
@STRING{IEEE_J_CAPT = "{IEEE} Trans. Compon. Packag. Technol."}
@STRING{IEEE_J_CAPTS = "{IEEE} Trans. Compon. Packag. Technol."}
@STRING{IEEE_J_CPART = "{IEEE} Trans. Compon. Parts"}
@STRING{IEEE_J_EPM = "{IEEE} Trans. Electron. Packag. Manuf."}
@STRING{IEEE_J_MFT = "{IEEE} Trans. Manuf. Technol."}
@STRING{IEEE_J_PHP = "{IEEE} Trans. Parts, Hybrids, Packag."}
@STRING{IEEE_J_PMP = "{IEEE} Trans. Parts, Mater., Packag."}
CAD
@STRING{IEEE_J_TCAD = "{IEEE} J. Technol. Comput. Aided Design"}
@STRING{IEEE_J_CAD = "{IEEE} Trans. Comput.-Aided Design Integr. Circuits Syst."}
coding, data, information, knowledge
@STRING{IEEE_J_IT = "{IEEE} Trans. Inf. Theory"}
@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowl. Data Eng."}
computers, computation, networking and software
@STRING{IEEE_J_C = "{IEEE} Trans. Comput."}
@STRING{IEEE_J_CAL = "{IEEE} Comput. Archit. Lett."}
disabled till definition is verified
STRING{IEEE_J_DSC = "{IEEE} Trans. Dependable Secure Comput."}
@STRING{IEEE_J_ECOMP = "{IEEE} Trans. Electron. Comput."}
@STRING{IEEE_J_EVC = "{IEEE} Trans. Evol. Comput."}
@STRING{IEEE_J_FUZZ = "{IEEE} Trans. Fuzzy Syst."}
@STRING{IEEE_J_IFS = "{IEEE} Trans. Inf. Forensics Security"}
@STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."}
@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Netw."}
@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Netw."}
@STRING{IEEE_J_PDS = "{IEEE} Trans. Parallel Distrib. Syst."}
@STRING{IEEE_J_SE = "{IEEE} Trans. Softw. Eng."}
computer graphics, imaging, and multimedia
@STRING{IEEE_J_JDT = "{IEEE/OSA} J. Display Technol."}
@STRING{IEEE_J_IP = "{IEEE} Trans. Image Process."}
@STRING{IEEE_J_MM = "{IEEE} Trans. Multimedia"}
@STRING{IEEE_J_VCG = "{IEEE} Trans. Vis. Comput. Graphics"}
cybernetics, ergonomics, robots, man-machine, and automation
@STRING{IEEE_J_ASE = "{IEEE} Trans. Autom. Sci. Eng."}
@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Autom."}
@STRING{IEEE_J_HFE = "{IEEE} Trans. Hum. Factors Electron."}
@STRING{IEEE_J_MMS = "{IEEE} Trans. Man-Mach. Syst."}
@STRING{IEEE_J_PAMI = "{IEEE} Trans. Pattern Anal. Mach. Intell."}
in 1989 JRA became RA
in August 2004, RA split into ASE and RO
@STRING{IEEE_J_RA = "{IEEE} Trans. Robot. Autom."}
@STRING{IEEE_J_RO = "{IEEE} Trans. Robot."}
@STRING{IEEE_J_SMC = "{IEEE} Trans. Syst., Man, Cybern."}
@STRING{IEEE_J_SMCA = "{IEEE} Trans. Syst., Man, Cybern. {A}"}
@STRING{IEEE_J_SMCB = "{IEEE} Trans. Syst., Man, Cybern. {B}"}
@STRING{IEEE_J_SMCC = "{IEEE} Trans. Syst., Man, Cybern. {C}"}
@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybern."}
earth, wind, fire and water
@STRING{IEEE_J_GE = "{IEEE} Trans. Geosci. Electron."}
@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sens."}
@STRING{IEEE_J_GRSL = "{IEEE} Geosci. Remote Sens. Lett."}
@STRING{IEEE_J_OE = "{IEEE} J. Ocean. Eng."}
education, engineering, history, IEEE, professional
disabled till definition is verified
STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."}
@STRING{IEEE_J_PROC = "Proc. {IEEE}"}
@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."}
@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manag."}
disabled till definition is verified
STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"}
@STRING{IEEE_J_PC = "{IEEE} Trans. Prof. Commun."}
electromagnetics, antennas, EMI, magnetics and microwave
@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propag. Lett."}
@STRING{IEEE_J_MGWL = "{IEEE} Microw. Guided Wave Lett."}
IEEE seems to want "Compon." here, not "Comp."
@STRING{IEEE_J_MWCL = "{IEEE} Microw. Wireless Compon. Lett."}
@STRING{IEEE_J_AP = "{IEEE} Trans. Antennas Propag."}
@STRING{IEEE_J_EMC = "{IEEE} Trans. Electromagn. Compat."}
@STRING{IEEE_J_MAG = "{IEEE} Trans. Magn."}
@STRING{IEEE_J_MTT = "{IEEE} Trans. Microw. Theory Tech."}
@STRING{IEEE_J_RFI = "{IEEE} Trans. Radio Freq. Interference"}
@STRING{IEEE_J_TJMJ = "{IEEE} Transl. J. Magn. Jpn."}
energy and power
@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Convers."}
@STRING{IEEE_J_PEL = "{IEEE} Power Electron. Lett."}
@STRING{IEEE_J_PWRAS = "{IEEE} Trans. Power App. Syst."}
@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Del."}
@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."}
@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."}
industrial, commercial and consumer
@STRING{IEEE_J_APPIND = "{IEEE} Trans. Appl. Ind."}
@STRING{IEEE_J_BC = "{IEEE} Trans. Broadcast."}
disabled till definition is verified
STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"}
@STRING{IEEE_J_CE = "{IEEE} Trans. Consum. Electron."}
@STRING{IEEE_J_IE = "{IEEE} Trans. Ind. Electron."}
@STRING{IEEE_J_IECI = "{IEEE} Trans. Ind. Electron. Contr. Instrum."}
@STRING{IEEE_J_IA = "{IEEE} Trans. Ind. Appl."}
@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Appl."}
@STRING{IEEE_J_IINF = "{IEEE} Trans. Ind. Informat."}
@STRING{IEEE_J_PSE = "{IEEE} J. Product Safety Eng."}
instrumentation and measurement
@STRING{IEEE_J_IM = "{IEEE} Trans. Instrum. Meas."}
insulation and materials
@STRING{IEEE_J_JEM = "{IEEE/TMS} J. Electron. Mater."}
@STRING{IEEE_J_DEI = "{IEEE} Trans. Dielectr. Electr. Insul."}
@STRING{IEEE_J_EI = "{IEEE} Trans. Electr. Insul."}
mechanical
@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatronics"}
@STRING{IEEE_J_MEMS = "J. Microelectromech. Syst."}
medical and biological
@STRING{IEEE_J_BME = "{IEEE} Trans. Biomed. Eng."}
Note: The B-ME journal later dropped the hyphen and became the BME.
@STRING{IEEE_J_B-ME = "{IEEE} Trans. Bio-Med. Eng."}
@STRING{IEEE_J_BMELC = "{IEEE} Trans. Bio-Med. Electron."}
disabled till definition is verified
STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biology Bioinformatics"}
@STRING{IEEE_J_ITBM = "{IEEE} Trans. Inf. Technol. Biomed."}
@STRING{IEEE_J_ME = "{IEEE} Trans. Med. Electron."}
@STRING{IEEE_J_MI = "{IEEE} Trans. Med. Imag."}
@STRING{IEEE_J_NB = "{IEEE} Trans. Nanobiosci."}
@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehabil. Eng."}
@STRING{IEEE_J_RE = "{IEEE} Trans. Rehabil. Eng."}
optics, lightwave and photonics
@STRING{IEEE_J_PTL = "{IEEE} Photon. Technol. Lett."}
@STRING{IEEE_J_JLT = "J. Lightw. Technol."}
physics, electrons, nanotechnology, nuclear and quantum electronics
@STRING{IEEE_J_EDL = "{IEEE} Electron Device Lett."}
@STRING{IEEE_J_JQE = "{IEEE} J. Quantum Electron."}
@STRING{IEEE_J_JSTQE = "{IEEE} J. Sel. Topics Quantum Electron."}
@STRING{IEEE_J_ED = "{IEEE} Trans. Electron Devices"}
@STRING{IEEE_J_NANO = "{IEEE} Trans. Nanotechnol."}
@STRING{IEEE_J_NS = "{IEEE} Trans. Nucl. Sci."}
@STRING{IEEE_J_PS = "{IEEE} Trans. Plasma Sci."}
reliability
IEEE seems to want "Mat." here, not "Mater."
@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mater. Rel."}
@STRING{IEEE_J_R = "{IEEE} Trans. Rel."}
semiconductors, superconductors, electrochemical and solid state
@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochem. Solid-State Lett."}
@STRING{IEEE_J_JSSC = "{IEEE} J. Solid-State Circuits"}
@STRING{IEEE_J_ASC = "{IEEE} Trans. Appl. Supercond."}
@STRING{IEEE_J_SM = "{IEEE} Trans. Semicond. Manuf."}
sensors
@STRING{IEEE_J_SENSOR = "{IEEE} Sensors J."}
VLSI
@STRING{IEEE_J_VLSI = "{IEEE} Trans. {VLSI} Syst."}
IEEE Magazines
@STRING{IEEE_M_AES = "{IEEE} Aerosp. Electron. Syst. Mag."}
@STRING{IEEE_M_HIST = "{IEEE} Ann. Hist. Comput."}
@STRING{IEEE_M_AP = "{IEEE} Antennas Propag. Mag."}
@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Mag."}
@STRING{IEEE_M_CD = "{IEEE} Circuits Devices Mag."}
@STRING{IEEE_M_CAS = "{IEEE} Circuits Syst. Mag."}
@STRING{IEEE_M_COM = "{IEEE} Commun. Mag."}
@STRING{IEEE_M_COMSOC = "{IEEE} Commun. Soc. Mag."}
@STRING{IEEE_M_CIM = "{IEEE} Comput. Intell. Mag."}
CSEM changed to CSE in 1999
@STRING{IEEE_M_CSE = "{IEEE} Comput. Sci. Eng."}
@STRING{IEEE_M_CSEM = "{IEEE} Comput. Sci. Eng. Mag."}
@STRING{IEEE_M_C = "{IEEE} Computer"}
@STRING{IEEE_M_CAP = "{IEEE} Comput. Appl. Power"}
@STRING{IEEE_M_CGA = "{IEEE} Comput. Graph. Appl."}
@STRING{IEEE_M_CONC = "{IEEE} Concurrency"}
@STRING{IEEE_M_CS = "{IEEE} Control Syst. Mag."}
@STRING{IEEE_M_DTC = "{IEEE} Des. Test. Comput."}
@STRING{IEEE_M_EI = "{IEEE} Electr. Insul. Mag."}
@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnol. Rev."}
@STRING{IEEE_M_EMB = "{IEEE} Eng. Med. Biol. Mag."}
@STRING{IEEE_M_EMR = "{IEEE} Eng. Manag. Rev."}
@STRING{IEEE_M_EXP = "{IEEE} Expert"}
@STRING{IEEE_M_IA = "{IEEE} Ind. Appl. Mag."}
@STRING{IEEE_M_IM = "{IEEE} Instrum. Meas. Mag."}
@STRING{IEEE_M_IS = "{IEEE} Intell. Syst."}
@STRING{IEEE_M_IC = "{IEEE} Internet Comput."}
@STRING{IEEE_M_ITP = "{IEEE} {IT} Prof."}
@STRING{IEEE_M_MICRO = "{IEEE} Micro"}
@STRING{IEEE_M_MW = "{IEEE} Microw. Mag."}
@STRING{IEEE_M_MM = "{IEEE} Multimedia"}
@STRING{IEEE_M_NET = "{IEEE} Netw."}
IEEE's editorial manual lists "Pers. Commun.",
but "Personal Commun. Mag." seems to be what is used in the journals
@STRING{IEEE_M_PCOM = "{IEEE} Personal Commun. Mag."}
@STRING{IEEE_M_POT = "{IEEE} Potentials"}
CAP and PER merged to form PE in 2003
@STRING{IEEE_M_PE = "{IEEE} Power Energy Mag."}
@STRING{IEEE_M_PER = "{IEEE} Power Eng. Rev."}
@STRING{IEEE_M_PVC = "{IEEE} Pervasive Comput."}
@STRING{IEEE_M_RA = "{IEEE} Robot. Autom. Mag."}
@STRING{IEEE_M_SAP = "{IEEE} Security Privacy"}
@STRING{IEEE_M_SP = "{IEEE} Signal Process. Mag."}
@STRING{IEEE_M_S = "{IEEE} Softw."}
@STRING{IEEE_M_SPECT = "{IEEE} Spectr."}
@STRING{IEEE_M_TS = "{IEEE} Technol. Soc. Mag."}
@STRING{IEEE_M_VT = "{IEEE} Veh. Technol. Mag."}
@STRING{IEEE_M_WC = "{IEEE} Wireless Commun. Mag."}
@STRING{IEEE_M_TODAY = "Today's Engineer"}
IEEE Online Publications
@STRING{IEEE_O_CSTO = "{IEEE} Commun. Surveys Tuts."}
disabled till definition is verified
STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"}
--
EOF
IEEEabrv.bib
V1.12 (2007/01/11)
Copyright (c) 2002-2007 by Michael Shell
See: http://www.michaelshell.org/
for current contact information.
BibTeX bibliography string definitions of the ABBREVIATED titles of
IEEE journals and magazines and online publications.
This file is designed for bibliography styles that require
abbreviated titles and is not for use in bibliographies that
require full-length titles.
Support sites:
http://www.michaelshell.org/tex/ieeetran/
http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
and/or
http://www.ieee.org/
Special thanks to Laura Hyslop and ken Rawson of IEEE for their help
in obtaining the information needed to compile this file. Also,
Volker Kuhlmann and Moritz Borgmann kindly provided some corrections
and additions.
*************************************************************************
Legal Notice:
This code is offered as-is without any warranty either expressed or
implied; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE!
User assumes all risk.
In no event shall IEEE or any contributor to this code be liable for
any damages or losses, including, but not limited to, incidental,
consequential, or any other damages, resulting from the use or misuse
of any information contained here.
All comments are the opinions of their respective authors and are not
necessarily endorsed by the IEEE.
This work is distributed under the LaTeX Project Public License (LPPL)
( http://www.latex-project.org/ ) version 1.3, and may be freely used,
distributed and modified. A copy of the LPPL, version 1.3, is included
in the base LaTeX documentation of all distributions of LaTeX released
2003/12/01 or later.
Retain all contribution notices and credits.
** Modified files should be clearly indicated as such, including **
** renaming them and changing author support contact information. **
File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
*************************************************************************
USAGE:
\bibliographystyle{mybstfile}
\bibliography{IEEEabrv,mybibfile}
where the IEEE titles in the .bib database entries use the strings
defined here. e.g.,
journal = IEEE_J_AC,
to yield "{IEEE} Trans. Automat. Contr."
IEEE uses abbreviated journal titles in their bibliographies -
this file is suitable for work that is to be submitted to the IEEE.
For work that requires full-length titles, you should use the full
titles provided in the companion file, IEEEfull.bib.
** NOTES **
1. Journals have been grouped according to subject in order to make it
easier to locate and extract the definitions for related journals -
as most works use references that are confined to a single topic.
Magazines are listed in straight alphabetical order.
2. String names are closely based on IEEE's own internal acronyms.
3. Abbreviations follow IEEE's style.
4. Older, out-of-print IEEE titles are included (but not including titles
dating prior to IEEE's formation from the IRE and AIEE in 1963).
5. The following NEW/current journal definitions have been disabled because
their abbreviations have not yet been verified:
STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biology Bioinformatics"}
STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."}
STRING{IEEE_J_DSC = "{IEEE} Trans. Dependable Secure Comput."}
STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"}
6. The following OLD journal definitions have been disabled because
their abbreviations have not yet been found/verified:
STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"}
STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"}
If you know what the proper abbreviation is for a string in #5 or #6 above,
email me and I will correct them in the next release.
IEEE Journals
aerospace and military
@STRING{IEEE_J_AES = "{IEEE} Trans. Aerosp. Electron. Syst."}
@STRING{IEEE_J_ANE = "{IEEE} Trans. Aerosp. Navig. Electron."}
@STRING{IEEE_J_ANNE = "{IEEE} Trans. Aeronaut. Navig. Electron."}
@STRING{IEEE_J_AS = "{IEEE} Trans. Aerosp."}
@STRING{IEEE_J_AIRE = "{IEEE} Trans. Airborne Electron."}
@STRING{IEEE_J_MIL = "{IEEE} Trans. Mil. Electron."}
autos, transportation and vehicles (non-aerospace)
@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transp. Syst."}
@STRING{IEEE_J_VT = "{IEEE} Trans. Veh. Technol."}
@STRING{IEEE_J_VC = "{IEEE} Trans. Veh. Commun."}
circuits, signals, systems, audio and controls
@STRING{IEEE_J_SPL = "{IEEE} Signal Process. Lett."}
@STRING{IEEE_J_ASSP = "{IEEE} Trans. Acoust., Speech, Signal Process."}
@STRING{IEEE_J_AU = "{IEEE} Trans. Audio"}
@STRING{IEEE_J_AUEA = "{IEEE} Trans. Audio Electroacoust."}
@STRING{IEEE_J_AC = "{IEEE} Trans. Autom. Control"}
@STRING{IEEE_J_CAS = "{IEEE} Trans. Circuits Syst."}
@STRING{IEEE_J_CASVT = "{IEEE} Trans. Circuits Syst. Video Technol."}
@STRING{IEEE_J_CASI = "{IEEE} Trans. Circuits Syst. {I}"}
@STRING{IEEE_J_CASII = "{IEEE} Trans. Circuits Syst. {II}"}
in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively.
@STRING{IEEE_J_CASI_RP = "{IEEE} Trans. Circuits Syst. {I}"}
@STRING{IEEE_J_CASII_EB = "{IEEE} Trans. Circuits Syst. {II}"}
@STRING{IEEE_J_CT = "{IEEE} Trans. Circuit Theory"}
@STRING{IEEE_J_CST = "{IEEE} Trans. Control Syst. Technol."}
@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Process."}
@STRING{IEEE_J_SU = "{IEEE} Trans. Sonics Ultrason."}
@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Process."}
@STRING{IEEE_J_UE = "{IEEE} Trans. Ultrason. Eng."}
@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelectr., Freq. Control"}
communications
@STRING{IEEE_J_COML = "{IEEE} Commun. Lett."}
@STRING{IEEE_J_JSAC = "{IEEE} J. Sel. Areas Commun."}
@STRING{IEEE_J_COM = "{IEEE} Trans. Commun."}
@STRING{IEEE_J_COMT = "{IEEE} Trans. Commun. Technol."}
@STRING{IEEE_J_WCOM = "{IEEE} Trans. Wireless Commun."}
components, packaging and manufacturing
@STRING{IEEE_J_ADVP = "{IEEE} Trans. Adv. Packag."}
@STRING{IEEE_J_CHMT = "{IEEE} Trans. Compon., Hybrids, Manuf. Technol."}
@STRING{IEEE_J_CPMTA = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {A}"}
@STRING{IEEE_J_CPMTB = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {B}"}
@STRING{IEEE_J_CPMTC = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {C}"}
@STRING{IEEE_J_CAPT = "{IEEE} Trans. Compon. Packag. Technol."}
@STRING{IEEE_J_CAPTS = "{IEEE} Trans. Compon. Packag. Technol."}
@STRING{IEEE_J_CPART = "{IEEE} Trans. Compon. Parts"}
@STRING{IEEE_J_EPM = "{IEEE} Trans. Electron. Packag. Manuf."}
@STRING{IEEE_J_MFT = "{IEEE} Trans. Manuf. Technol."}
@STRING{IEEE_J_PHP = "{IEEE} Trans. Parts, Hybrids, Packag."}
@STRING{IEEE_J_PMP = "{IEEE} Trans. Parts, Mater., Packag."}
CAD
@STRING{IEEE_J_TCAD = "{IEEE} J. Technol. Comput. Aided Design"}
@STRING{IEEE_J_CAD = "{IEEE} Trans. Comput.-Aided Design Integr. Circuits Syst."}
coding, data, information, knowledge
@STRING{IEEE_J_IT = "{IEEE} Trans. Inf. Theory"}
@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowl. Data Eng."}
computers, computation, networking and software
@STRING{IEEE_J_C = "{IEEE} Trans. Comput."}
@STRING{IEEE_J_CAL = "{IEEE} Comput. Archit. Lett."}
disabled till definition is verified
STRING{IEEE_J_DSC = "{IEEE} Trans. Dependable Secure Comput."}
@STRING{IEEE_J_ECOMP = "{IEEE} Trans. Electron. Comput."}
@STRING{IEEE_J_EVC = "{IEEE} Trans. Evol. Comput."}
@STRING{IEEE_J_FUZZ = "{IEEE} Trans. Fuzzy Syst."}
@STRING{IEEE_J_IFS = "{IEEE} Trans. Inf. Forensics Security"}
@STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."}
@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Netw."}
@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Netw."}
@STRING{IEEE_J_PDS = "{IEEE} Trans. Parallel Distrib. Syst."}
@STRING{IEEE_J_SE = "{IEEE} Trans. Softw. Eng."}
computer graphics, imaging, and multimedia
@STRING{IEEE_J_JDT = "{IEEE/OSA} J. Display Technol."}
@STRING{IEEE_J_IP = "{IEEE} Trans. Image Process."}
@STRING{IEEE_J_MM = "{IEEE} Trans. Multimedia"}
@STRING{IEEE_J_VCG = "{IEEE} Trans. Vis. Comput. Graphics"}
cybernetics, ergonomics, robots, man-machine, and automation
@STRING{IEEE_J_ASE = "{IEEE} Trans. Autom. Sci. Eng."}
@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Autom."}
@STRING{IEEE_J_HFE = "{IEEE} Trans. Hum. Factors Electron."}
@STRING{IEEE_J_MMS = "{IEEE} Trans. Man-Mach. Syst."}
@STRING{IEEE_J_PAMI = "{IEEE} Trans. Pattern Anal. Mach. Intell."}
in 1989 JRA became RA
in August 2004, RA split into ASE and RO
@STRING{IEEE_J_RA = "{IEEE} Trans. Robot. Autom."}
@STRING{IEEE_J_RO = "{IEEE} Trans. Robot."}
@STRING{IEEE_J_SMC = "{IEEE} Trans. Syst., Man, Cybern."}
@STRING{IEEE_J_SMCA = "{IEEE} Trans. Syst., Man, Cybern. {A}"}
@STRING{IEEE_J_SMCB = "{IEEE} Trans. Syst., Man, Cybern. {B}"}
@STRING{IEEE_J_SMCC = "{IEEE} Trans. Syst., Man, Cybern. {C}"}
@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybern."}
earth, wind, fire and water
@STRING{IEEE_J_GE = "{IEEE} Trans. Geosci. Electron."}
@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sens."}
@STRING{IEEE_J_GRSL = "{IEEE} Geosci. Remote Sens. Lett."}
@STRING{IEEE_J_OE = "{IEEE} J. Ocean. Eng."}
education, engineering, history, IEEE, professional
disabled till definition is verified
STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."}
@STRING{IEEE_J_PROC = "Proc. {IEEE}"}
@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."}
@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manag."}
disabled till definition is verified
STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"}
@STRING{IEEE_J_PC = "{IEEE} Trans. Prof. Commun."}
electromagnetics, antennas, EMI, magnetics and microwave
@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propag. Lett."}
@STRING{IEEE_J_MGWL = "{IEEE} Microw. Guided Wave Lett."}
IEEE seems to want "Compon." here, not "Comp."
@STRING{IEEE_J_MWCL = "{IEEE} Microw. Wireless Compon. Lett."}
@STRING{IEEE_J_AP = "{IEEE} Trans. Antennas Propag."}
@STRING{IEEE_J_EMC = "{IEEE} Trans. Electromagn. Compat."}
@STRING{IEEE_J_MAG = "{IEEE} Trans. Magn."}
@STRING{IEEE_J_MTT = "{IEEE} Trans. Microw. Theory Tech."}
@STRING{IEEE_J_RFI = "{IEEE} Trans. Radio Freq. Interference"}
@STRING{IEEE_J_TJMJ = "{IEEE} Transl. J. Magn. Jpn."}
energy and power
@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Convers."}
@STRING{IEEE_J_PEL = "{IEEE} Power Electron. Lett."}
@STRING{IEEE_J_PWRAS = "{IEEE} Trans. Power App. Syst."}
@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Del."}
@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."}
@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."}
industrial, commercial and consumer
@STRING{IEEE_J_APPIND = "{IEEE} Trans. Appl. Ind."}
@STRING{IEEE_J_BC = "{IEEE} Trans. Broadcast."}
disabled till definition is verified
STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"}
@STRING{IEEE_J_CE = "{IEEE} Trans. Consum. Electron."}
@STRING{IEEE_J_IE = "{IEEE} Trans. Ind. Electron."}
@STRING{IEEE_J_IECI = "{IEEE} Trans. Ind. Electron. Contr. Instrum."}
@STRING{IEEE_J_IA = "{IEEE} Trans. Ind. Appl."}
@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Appl."}
@STRING{IEEE_J_IINF = "{IEEE} Trans. Ind. Informat."}
@STRING{IEEE_J_PSE = "{IEEE} J. Product Safety Eng."}
instrumentation and measurement
@STRING{IEEE_J_IM = "{IEEE} Trans. Instrum. Meas."}
insulation and materials
@STRING{IEEE_J_JEM = "{IEEE/TMS} J. Electron. Mater."}
@STRING{IEEE_J_DEI = "{IEEE} Trans. Dielectr. Electr. Insul."}
@STRING{IEEE_J_EI = "{IEEE} Trans. Electr. Insul."}
mechanical
@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatronics"}
@STRING{IEEE_J_MEMS = "J. Microelectromech. Syst."}
medical and biological
@STRING{IEEE_J_BME = "{IEEE} Trans. Biomed. Eng."}
Note: The B-ME journal later dropped the hyphen and became the BME.
@STRING{IEEE_J_B-ME = "{IEEE} Trans. Bio-Med. Eng."}
@STRING{IEEE_J_BMELC = "{IEEE} Trans. Bio-Med. Electron."}
disabled till definition is verified
STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biology Bioinformatics"}
@STRING{IEEE_J_ITBM = "{IEEE} Trans. Inf. Technol. Biomed."}
@STRING{IEEE_J_ME = "{IEEE} Trans. Med. Electron."}
@STRING{IEEE_J_MI = "{IEEE} Trans. Med. Imag."}
@STRING{IEEE_J_NB = "{IEEE} Trans. Nanobiosci."}
@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehabil. Eng."}
@STRING{IEEE_J_RE = "{IEEE} Trans. Rehabil. Eng."}
optics, lightwave and photonics
@STRING{IEEE_J_PTL = "{IEEE} Photon. Technol. Lett."}
@STRING{IEEE_J_JLT = "J. Lightw. Technol."}
physics, electrons, nanotechnology, nuclear and quantum electronics
@STRING{IEEE_J_EDL = "{IEEE} Electron Device Lett."}
@STRING{IEEE_J_JQE = "{IEEE} J. Quantum Electron."}
@STRING{IEEE_J_JSTQE = "{IEEE} J. Sel. Topics Quantum Electron."}
@STRING{IEEE_J_ED = "{IEEE} Trans. Electron Devices"}
@STRING{IEEE_J_NANO = "{IEEE} Trans. Nanotechnol."}
@STRING{IEEE_J_NS = "{IEEE} Trans. Nucl. Sci."}
@STRING{IEEE_J_PS = "{IEEE} Trans. Plasma Sci."}
reliability
IEEE seems to want "Mat." here, not "Mater."
@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mater. Rel."}
@STRING{IEEE_J_R = "{IEEE} Trans. Rel."}
semiconductors, superconductors, electrochemical and solid state
@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochem. Solid-State Lett."}
@STRING{IEEE_J_JSSC = "{IEEE} J. Solid-State Circuits"}
@STRING{IEEE_J_ASC = "{IEEE} Trans. Appl. Supercond."}
@STRING{IEEE_J_SM = "{IEEE} Trans. Semicond. Manuf."}
sensors
@STRING{IEEE_J_SENSOR = "{IEEE} Sensors J."}
VLSI
@STRING{IEEE_J_VLSI = "{IEEE} Trans. {VLSI} Syst."}
IEEE Magazines
@STRING{IEEE_M_AES = "{IEEE} Aerosp. Electron. Syst. Mag."}
@STRING{IEEE_M_HIST = "{IEEE} Ann. Hist. Comput."}
@STRING{IEEE_M_AP = "{IEEE} Antennas Propag. Mag."}
@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Mag."}
@STRING{IEEE_M_CD = "{IEEE} Circuits Devices Mag."}
@STRING{IEEE_M_CAS = "{IEEE} Circuits Syst. Mag."}
@STRING{IEEE_M_COM = "{IEEE} Commun. Mag."}
@STRING{IEEE_M_COMSOC = "{IEEE} Commun. Soc. Mag."}
@STRING{IEEE_M_CIM = "{IEEE} Comput. Intell. Mag."}
CSEM changed to CSE in 1999
@STRING{IEEE_M_CSE = "{IEEE} Comput. Sci. Eng."}
@STRING{IEEE_M_CSEM = "{IEEE} Comput. Sci. Eng. Mag."}
@STRING{IEEE_M_C = "{IEEE} Computer"}
@STRING{IEEE_M_CAP = "{IEEE} Comput. Appl. Power"}
@STRING{IEEE_M_CGA = "{IEEE} Comput. Graph. Appl."}
@STRING{IEEE_M_CONC = "{IEEE} Concurrency"}
@STRING{IEEE_M_CS = "{IEEE} Control Syst. Mag."}
@STRING{IEEE_M_DTC = "{IEEE} Des. Test. Comput."}
@STRING{IEEE_M_EI = "{IEEE} Electr. Insul. Mag."}
@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnol. Rev."}
@STRING{IEEE_M_EMB = "{IEEE} Eng. Med. Biol. Mag."}
@STRING{IEEE_M_EMR = "{IEEE} Eng. Manag. Rev."}
@STRING{IEEE_M_EXP = "{IEEE} Expert"}
@STRING{IEEE_M_IA = "{IEEE} Ind. Appl. Mag."}
@STRING{IEEE_M_IM = "{IEEE} Instrum. Meas. Mag."}
@STRING{IEEE_M_IS = "{IEEE} Intell. Syst."}
@STRING{IEEE_M_IC = "{IEEE} Internet Comput."}
@STRING{IEEE_M_ITP = "{IEEE} {IT} Prof."}
@STRING{IEEE_M_MICRO = "{IEEE} Micro"}
@STRING{IEEE_M_MW = "{IEEE} Microw. Mag."}
@STRING{IEEE_M_MM = "{IEEE} Multimedia"}
@STRING{IEEE_M_NET = "{IEEE} Netw."}
IEEE's editorial manual lists "Pers. Commun.",
but "Personal Commun. Mag." seems to be what is used in the journals
@STRING{IEEE_M_PCOM = "{IEEE} Personal Commun. Mag."}
@STRING{IEEE_M_POT = "{IEEE} Potentials"}
CAP and PER merged to form PE in 2003
@STRING{IEEE_M_PE = "{IEEE} Power Energy Mag."}
@STRING{IEEE_M_PER = "{IEEE} Power Eng. Rev."}
@STRING{IEEE_M_PVC = "{IEEE} Pervasive Comput."}
@STRING{IEEE_M_RA = "{IEEE} Robot. Autom. Mag."}
@STRING{IEEE_M_SAP = "{IEEE} Security Privacy"}
@STRING{IEEE_M_SP = "{IEEE} Signal Process. Mag."}
@STRING{IEEE_M_S = "{IEEE} Softw."}
@STRING{IEEE_M_SPECT = "{IEEE} Spectr."}
@STRING{IEEE_M_TS = "{IEEE} Technol. Soc. Mag."}
@STRING{IEEE_M_VT = "{IEEE} Veh. Technol. Mag."}
@STRING{IEEE_M_WC = "{IEEE} Wireless Commun. Mag."}
@STRING{IEEE_M_TODAY = "Today's Engineer"}
IEEE Online Publications
@STRING{IEEE_O_CSTO = "{IEEE} Commun. Surveys Tuts."}
disabled till definition is verified
STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"}
--
EOF

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

Before

Width:  |  Height:  |  Size: 347 KiB

After

Width:  |  Height:  |  Size: 347 KiB