def test_kill(self): a = Circuit(""" V1 1 2 6 V2 2 0 4 R 1 0 2""") self.assertEqual(a.R.V, 10, "incorrect series voltage") b = a.kill('V1') self.assertEqual(b.R.V, 4, "incorrect voltage with V1 killed") c = a.kill('V2') self.assertEqual(c.R.V, 6, "incorrect voltage with V2 killed") d = a.kill_except('V1') self.assertEqual(d.R.V, 6, "incorrect voltage with all killed except V1")
def main (argv=None): if argv is None: argv = sys.argv version = __doc__.split('\n')[0] parser = ArgumentParser(description='Convert Lcapy schematic to image file.') parser.add_argument('--version', action='version', version=__doc__.split('\n')[0]) parser.add_argument('--debug', action='store_true', dest='debug', default=None, help="enable debugging") parser.add_argument('--draw-nodes', type=str, dest='draw_nodes', default=None, help='draw nodes, choice: none, connections, primary, all') parser.add_argument('--nodraw-nodes', action='store_false', dest='draw_nodes', help="don't draw nodes") parser.add_argument('--label-nodes', type=str, dest='label_nodes', default=None, help='label nodes, choice: none, alpha, pins, primary, all or a list of comma separated node names in braces, e.g, {1, 2, 3}') parser.add_argument('--nolabel-nodes', action='store_false', dest='label_nodes', help="don't label nodes") parser.add_argument('--nolabel-ids', action='store_false', dest='label_ids', default=None, help="don't label element identifiers") parser.add_argument('--label-ids', action='store_true', dest='label_ids', default=None, help="label element identifiers") parser.add_argument('--nolabel-values', action='store_false', dest='label_values', default=None, help="don't label values") parser.add_argument('--label-values', action='store_true', dest='label_values', default=None, help="labels values") parser.add_argument('--s-model', action='store_true', dest='s_model', default=False, help='generate s-domain model schematic') parser.add_argument('--noisy-model', action='store_true', dest='noisy_model', default=False, help='generate noisy model schematic') parser.add_argument('--ac-model', action='store_true', dest='ac_model', default=False, help='generate AC model schematic') parser.add_argument('--p-model', action='store_true', dest='p_model', default=False, help='generate pre-initial model schematic') parser.add_argument('--k-model', action='store_true', dest='k_model', default=False, help='generate schematic with independent sources killed') parser.add_argument('--kill-zero', action='store_true', default=False, help='generate schematic with zero independent sources killed') parser.add_argument('--scale', type=float, dest='scale', default=None, help='schematic scale factor, this scales the schematic size but not the fonts') parser.add_argument('--node-spacing', type=float, dest='node_spacing', default=None, help='this specifies the spacing of the nodes of a component') parser.add_argument('--cpt-size', type=float, dest='cpt_size', default=None, help='this specifies the size of a component; it needs to be smaller than node_spacing') parser.add_argument('--dpi', type=float, default=None, help='this specifies the number of dots per inch when creating a png file') parser.add_argument('--help-lines', type=float, dest='help_lines', default=None, help="draw help lines") parser.add_argument('--xgraph', action='store_true', dest='xgraph', default=False, help="generate graph of component x positions") parser.add_argument('--circuitgraph', action='store_true', default=False, help="generate circuit graph") parser.add_argument('--ygraph', action='store_true', dest='ygraph', default=False, help="generate graph of component y positions") parser.add_argument('--stage', type=int, dest='stage', default=0, help='select graph analysis stage 0--4') parser.add_argument('--pdb', action='store_true', default=False, help="enter python debugger on exception") parser.add_argument('--allow-anon', action='store_true', default=False, help="allow anonymous component ids") parser.add_argument('--renumber', type=str, dest='renumber', default=None, help='renumber nodes, e.g, 10:1, 11:2 or all') parser.add_argument('--font', type=str, default=None, help=r'specify default font, e.g., \small, \sffamily\tiny') parser.add_argument('--options', type=str, default=None, help='specify circuitikz options') parser.add_argument('--preamble', type=str, default=None, help='specify circuitikz commands at start') parser.add_argument('--postamble', type=str, default=None, help='specify circuitikz commands at end') parser.add_argument('filename', type=str, help='schematic filename') parser.add_argument('outfilename', type=str, nargs='?', help='output filename', default=None) parser.add_argument('--show', action='store_true', dest='show', default=None, help="show image") args = parser.parse_args() infilename = args.filename outfilename = args.outfilename if args.pdb: sys.excepthook = schtex_exception from lcapy import Circuit, CircuitGraph cct = Circuit(infilename, allow_anon=args.allow_anon) if args.k_model: cct = cct.kill() if args.kill_zero: cct = cct.kill_zero() if args.s_model: cct = cct.s_model() if args.ac_model: cct = cct.ac_model() if args.p_model: cct = cct.pre_initial_model() if args.noisy_model: cct = cct.noisy() if args.renumber == 'all': cct = cct.renumber() elif args.renumber: parts = args.renumber.split(',') node_map = {} for part in parts: part = part.strip() fields = part.split(':') if len(fields) != 2: raise ValueError('Expecting mapping of form a:b got %s' % part) node_map[fields[0]] = fields[1] cct = cct.renumber(node_map) if args.label_nodes not in ('none', 'all', 'alpha', 'pins', 'primary', False, None): raise ValueError('Illegal option %s for label_nodes' % args.label_nodes) if args.draw_nodes not in ('none', 'all', 'primary', 'connections', False, None): raise ValueError('Illegal option %s for draw_nodes' % args.draw_nodes) if outfilename is not None: base, ext = os.path.splitext(outfilename) if ext == '.sch': open(outfilename, 'w').write(str(cct)) return 0 nosave = args.xgraph or args.ygraph if not args.xgraph and not args.ygraph and not args.circuitgraph: kwargs = {} if args.options != None: kwargs['options'] = args.options if args.preamble != None: kwargs['preamble'] = args.preamble if args.postamble != None: kwargs['postamble'] = args.postamble if args.font != None: kwargs['font'] = args.font cct.draw(label_nodes=args.label_nodes, draw_nodes=args.draw_nodes, label_ids=args.label_ids, label_values=args.label_values, filename=outfilename, scale=args.scale, node_spacing=args.node_spacing, cpt_size=args.cpt_size, help_lines=args.help_lines, debug=args.debug, dpi=args.dpi, nosave=nosave, **kwargs) if args.xgraph: cct.sch.make_graphs(debug=args.debug) cct.sch.xgraph.dot(outfilename, stage=args.stage) if args.ygraph: cct.sch.make_graphs(debug=args.debug) cct.sch.ygraph.dot(outfilename, stage=args.stage) if args.circuitgraph: cg = CircuitGraph(cct) cg.draw(filename=outfilename) if args.show: show() return 0
def main(argv=None): if argv is None: argv = sys.argv version = __doc__.split('\n')[0] parser = OptionParser(usage='%prog schematic-file [output-file]', version=version, description=__doc__) parser.add_option('--debug', action='store_true', dest='debug', default=None, help="enable debugging") parser.add_option( '--draw-nodes', type='str', dest='draw_nodes', default=None, help='draw nodes, choice: none, connections, primary, all') parser.add_option('--nodraw-nodes', action='store_false', dest='draw_nodes', help="don't draw nodes") parser.add_option( '--label-nodes', type='str', dest='label_nodes', default=None, help='label nodes, choice: none, alpha, pins, primary, all') parser.add_option('--nolabel-nodes', action='store_false', dest='label_nodes', help="don't label nodes") parser.add_option('--nolabel-ids', action='store_false', dest='label_ids', default=None, help="don't label element identifiers") parser.add_option('--label-ids', action='store_true', dest='label_ids', default=None, help="label element identifiers") parser.add_option('--nolabel-values', action='store_false', dest='label_values', default=None, help="don't label values") parser.add_option('--label-values', action='store_true', dest='label_values', default=None, help="labels values") parser.add_option('--s-model', action='store_true', dest='s_model', default=False, help='generate s-domain model schematic') parser.add_option('--ac-model', action='store_true', dest='ac_model', default=False, help='generate AC model schematic') parser.add_option('--p-model', action='store_true', dest='p_model', default=False, help='generate pre-initial model schematic') parser.add_option( '--k-model', action='store_true', dest='k_model', default=False, help='generate schematic with independent sources killed') parser.add_option( '--scale', type='float', dest='scale', default=None, help= 'schematic scale factor, this scales the schematic size but not the fonts' ) parser.add_option( '--node-spacing', type='float', dest='node_spacing', default=None, help='this specifies the spacing of the nodes of a component') parser.add_option( '--cpt-size', type='float', dest='cpt_size', default=None, help= 'this specifies the size of a component; it needs to be smaller than node_spacing' ) parser.add_option('--help-lines', type='float', dest='help_lines', default=None, help="draw help lines") parser.add_option('--xgraph', action='store_true', dest='xgraph', default=False, help="generate graph of component x positions") parser.add_option('--ygraph', action='store_true', dest='ygraph', default=False, help="generate graph of component y positions") parser.add_option('--stage', type='int', dest='stage', default=0, help='graph analysis stage') parser.add_option('--pdb', action='store_true', default=False, help="enter python debugger on exception") (options, args) = parser.parse_args() if len(args) < 1: parser.error('missing argument') return 1 infilename = args[0] outfilename = None if len(args) > 1: outfilename = args[1] if options.pdb: sys.excepthook = schtex_exception from lcapy import Circuit cct = Circuit(infilename) if options.k_model: cct = cct.kill() if options.s_model: cct = cct.s_model() if options.ac_model: cct = cct.ac_model() if options.p_model: cct = cct.pre_initial_model() if options.label_nodes not in ('none', 'all', 'alpha', 'pins', 'primary', False, None): raise ValueError('Illegal option %s for label_nodes' % options.label_nodes) if options.draw_nodes not in ('none', 'all', 'primary', 'connections', False, None): raise ValueError('Illegal option %s for draw_nodes' % options.draw_nodes) nosave = options.xgraph or options.ygraph if not options.xgraph and not options.ygraph: cct.draw(label_nodes=options.label_nodes, draw_nodes=options.draw_nodes, label_ids=options.label_ids, label_values=options.label_values, filename=outfilename, scale=options.scale, node_spacing=options.node_spacing, cpt_size=options.cpt_size, help_lines=options.help_lines, debug=options.debug, nosave=nosave) if options.xgraph: cct.sch.make_graphs() cct.sch.xgraph.dot(outfilename, stage=options.stage) return 0 if options.ygraph: cct.sch.make_graphs() cct.sch.ygraph.dot(outfilename, stage=options.stage) return 0 return 0
def main (argv=None): if argv is None: argv = sys.argv version = __doc__.split('\n')[0] parser = OptionParser(usage='%prog schematic-file [output-file]', version=version, description=__doc__) parser.add_option('--debug', action='store_true', dest='debug', default=None, help="enable debugging") parser.add_option('--draw-nodes', type='str', dest='draw_nodes', default=None, help='draw nodes, choice none, connections, primary, all') parser.add_option('--nodraw-nodes', action='store_false', dest='draw_nodes', help="don't draw nodes") parser.add_option('--label-nodes', type='str', dest='label_nodes', default=None, help='label nodes, choice none, primary, all') parser.add_option('--nolabel-nodes', action='store_false', dest='label_nodes', help="don't label nodes") parser.add_option('--nolabel-ids', action='store_false', dest='label_ids', default=None, help="don't label element identifiers") parser.add_option('--label-ids', action='store_true', dest='label_ids', default=None, help="label element identifiers") parser.add_option('--nolabel-values', action='store_false', dest='label_values', default=None, help="don't label values") parser.add_option('--label-values', action='store_true', dest='label_values', default=None, help="labels values") parser.add_option('--s-model', action='store_true', dest='s_model', default=False, help='generate s-domain model schematic') parser.add_option('--p-model', action='store_true', dest='p_model', default=False, help='generate pre-initial model schematic') parser.add_option('--k-model', action='store_true', dest='k_model', default=False, help='generate schematic with independent sources killed') parser.add_option('--scale', type='float', dest='scale', default=1, help='schematic scale factor') parser.add_option('--stretch', type='float', dest='stretch', default=1, help='schematic stretch factor') (options, args) = parser.parse_args() if len(args) < 1: parser.error('missing argument') return 1 infilename = args[0] outfilename = None if len(args) > 1: outfilename = args[1] from lcapy import Circuit cct = Circuit(infilename) if options.k_model: cct = cct.kill() if options.s_model: cct = cct.s_model() if options.p_model: cct = cct.pre_initial_model() if options.label_nodes not in ('none', 'all', 'primary', False, None): raise ValueError('Illegal option %s for label_nodes' % options.label_nodes) if options.draw_nodes not in ('none', 'all', 'primary', 'connections', False, None): raise ValueError('Illegal option %s for draw_nodes' % options.draw_nodes) cct.draw(label_nodes=options.label_nodes, draw_nodes=options.draw_nodes, label_ids=options.label_ids, label_values=options.label_values, filename=outfilename, scale=options.scale, stretch=options.stretch, debug=options.debug) return 0
def main (argv=None): if argv is None: argv = sys.argv version = __doc__.split('\n')[0] parser = OptionParser(usage='%prog schematic-file [output-file]', version=version, description=__doc__) parser.add_option('--debug', action='store_true', dest='debug', default=None, help="enable debugging") parser.add_option('--draw-nodes', type='str', dest='draw_nodes', default=None, help='draw nodes, choice: none, connections, primary, all') parser.add_option('--nodraw-nodes', action='store_false', dest='draw_nodes', help="don't draw nodes") parser.add_option('--label-nodes', type='str', dest='label_nodes', default=None, help='label nodes, choice: none, alpha, pins, primary, all') parser.add_option('--nolabel-nodes', action='store_false', dest='label_nodes', help="don't label nodes") parser.add_option('--nolabel-ids', action='store_false', dest='label_ids', default=None, help="don't label element identifiers") parser.add_option('--label-ids', action='store_true', dest='label_ids', default=None, help="label element identifiers") parser.add_option('--nolabel-values', action='store_false', dest='label_values', default=None, help="don't label values") parser.add_option('--label-values', action='store_true', dest='label_values', default=None, help="labels values") parser.add_option('--s-model', action='store_true', dest='s_model', default=False, help='generate s-domain model schematic') parser.add_option('--ac-model', action='store_true', dest='ac_model', default=False, help='generate AC model schematic') parser.add_option('--p-model', action='store_true', dest='p_model', default=False, help='generate pre-initial model schematic') parser.add_option('--k-model', action='store_true', dest='k_model', default=False, help='generate schematic with independent sources killed') parser.add_option('--scale', type='float', dest='scale', default=None, help='schematic scale factor, this scales the schematic size but not the fonts') parser.add_option('--node-spacing', type='float', dest='node_spacing', default=None, help='this specifies the spacing of the nodes of a component') parser.add_option('--cpt-size', type='float', dest='cpt_size', default=None, help='this specifies the size of a component; it needs to be smaller than node_spacing') parser.add_option('--help-lines', type='float', dest='help_lines', default=None, help="draw help lines") parser.add_option('--xgraph', action='store_true', dest='xgraph', default=False, help="generate graph of component x positions") parser.add_option('--ygraph', action='store_true', dest='ygraph', default=False, help="generate graph of component y positions") parser.add_option('--stage', type='int', dest='stage', default=0, help='graph analysis stage') parser.add_option('--pdb', action='store_true', default=False, help="enter python debugger on exception") (options, args) = parser.parse_args() if len(args) < 1: parser.error('missing argument') return 1 infilename = args[0] outfilename = None if len(args) > 1: outfilename = args[1] if options.pdb: sys.excepthook = schtex_exception from lcapy import Circuit cct = Circuit(infilename) if options.k_model: cct = cct.kill() if options.s_model: cct = cct.s_model() if options.ac_model: cct = cct.ac_model() if options.p_model: cct = cct.pre_initial_model() if options.label_nodes not in ('none', 'all', 'alpha', 'pins', 'primary', False, None): raise ValueError('Illegal option %s for label_nodes' % options.label_nodes) if options.draw_nodes not in ('none', 'all', 'primary', 'connections', False, None): raise ValueError('Illegal option %s for draw_nodes' % options.draw_nodes) nosave = options.xgraph or options.ygraph if not options.xgraph and not options.ygraph: cct.draw(label_nodes=options.label_nodes, draw_nodes=options.draw_nodes, label_ids=options.label_ids, label_values=options.label_values, filename=outfilename, scale=options.scale, node_spacing=options.node_spacing, cpt_size=options.cpt_size, help_lines=options.help_lines, debug=options.debug, nosave=nosave) if options.xgraph: cct.sch.make_graphs() cct.sch.xgraph.dot(outfilename, stage=options.stage) return 0 if options.ygraph: cct.sch.make_graphs() cct.sch.ygraph.dot(outfilename, stage=options.stage) return 0 return 0