text:
1384.6 - Statistics - Tasmania, 2005
ARCHIVED ISSUE Released at 11:30 AM (CANBERRA TIME) 13/09/2002
Page tools: Print Page Print All | |||
Post-war Tasmania witnessed an influx of European migrants and displaced persons.
In 1951, some 3,800 'displaced persons' lived in Tasmania (although many of them had left by 1966). Many of Tasmania's new European migrants came under contract to work for the Hydro-Electric Commission at remote hydro-construction villages such as Bronte Park and Butler's Gorge. With the swelling of its workforce the HEC's development program continued unabated. Power stations were opened at Butler's Gorge (1952), Bronte Park (1953), Tungatinah (1955), Wayatinah (1961), Liapootah (1961) and Catagunya (1962). The proposal to flood Lake Pedder in 1967, however, met with vehement opposition from environmentalists. Whilst the battle to save Lake Pedder was ultimately lost, the HEC's subsequent proposal for a Gordon-below-Franklin dam was blocked in 1983 when the Federal Government intervened under a rising tide of pressure from environmental groups. The 'Greens' had emerged as a key political force in Tasmania. The period also witnessed a strengthening of Aboriginal activism. The struggle to have Aboriginality recognised, claims for land rights and the return of Aboriginal skeletal and cultural material from museums and scientific collections were major issues of concern. Unemployment reappeared as a major social issue during this period. In the early 1980s, unemployment reached the 10% level. Changing economic conditions forced many small factories to close and the industrial giants to cut back their work forces. The Government, traditionally a major employer in Tasmania, reduced staff. The service and tourism sectors experienced some growth. 1950 June 25 Korean War begins. 1951 Hartz Mountain National Park proclaimed. Cape Barren Island Aboriginal Reserve terminated in line with the Government's assimilation policy. February/March Italian and German migrants arrive to work under contract for HEC. 1952 Burnie General Hospital opened. June Serious floods experienced throughout island. November 22 Butler's Gorge power station officially opened. December 13 Launceston trams cease operating. 1953 Housing Department established to manage the State's public housing stock. Tasman Ltd diesel train service between Hobart and northern towns begins. June 2 Pine Tier Dam of the Tungatinah power scheme officially opened. July 27 End of Korean War. 1954 February Queen Elizabeth II (accompanied by Prince Philip, Duke of Edinburgh) becomes the first reigning monarch to visit the State. June 6 Flooding occurs in eastern and southern Tasmania. July 5 Tattersall's Lotteries transfer to Melbourne. December 31 Spouses of property owners granted eligibility to vote in Legislative Council elections. 1955 Lactos cheese factory established at Burnie. February 19 First female members of the House of Assembly elected (Amelia Best and Mabel Miller). March 23 Lake Pedder National Park proclaimed (it is later extended to form the South West National Park). May 20 Tungatinah power station opened. September 23 First ingot poured from Bell Bay Aluminium Refinery. 1956 Tasmania's first woman Mayor, Dorothy Edwards, appointed at Launceston. February 9 Floods in north-east Tasmania. December 12 Trevallyn Power Scheme officially opened. 1957 November 1 Rivers and Water Supply Commission established by Water Act. 1958 January 10 Devon Hospital, Latrobe merges with Meercroft Hospital to form the Mersey General Hospital. 1959 First election to fill 35 seats in an enlarged House of Assembly held. January 1 Public Service Tribunal established as an industrial authority. October 2 Princess of Tasmania becomes the first roll-on passenger ferry in Bass Strait service. 1960 Risdon Gaol, Hobart established. April 22 Severe floods hit the Derwent Valley and Hobart. May 23 Television begins transmission in Hobart. June Strahan-Zeehan railway line closed. October 28 Hobart trams cease running. 1961 State matriculation college policy announced. March 23 The power stations at Lake Echo, Wayatinah and Liapootah officially opened. 1962 Australian Paper Makers Ltd's pulp mill commences at Port Huon. February TEMCO's ferro-manganese plant opened at Bell Bay. July Catagunya power station begins operating. 1963 February Royal visit by Queen Elizabeth II and Prince Philip, Duke of Edinburgh. July 29 Television first goes to air in Launceston. August 10 Last train runs on the Mt Lyell Railway from Queenstown to Strahan. December 13 Opening of Murchison Highway linking the north-west with the west. 1964 Freshwater trout farm established at Bridport. June 24 Shannon power station closed. October 24 Glenorchy proclaimed a city. 1965 Tasmania sends first troops to Vietnam War under the National Service Scheme. Bass Strait oil drilling commences. Burnie General and Spencer Hospitals merge to form the North West General Hospital. March 13 Official opening of Tasmanian Conservatorium of Music. March 29 Tasman Bridge, Hobart, officially opened. March 30 Poatina power station opened. June 30 Closing of Waddamana 'A' power station. 1966 February 7 Dental Nursing School opens. February 14 Decimal currency introduced. December 22 Principle of equal pay for women in the Public Service recognised by Act of Parliament. 1967 Tasmania joins rest of Australia in approving full constitutional rights for Aborigines. February 7 Bushfires sweep the State, destroying over 1,000 homes and taking 62 lives. March 15 Strzelecki National Park declared, Flinders Island. May 25 HEC tables plans in Parliament for the damming of Lake Pedder in the south-west. June 21 Rocky Cape National Park declared. October 1 Daylight savings legislation introduced. 1968 March 6 Savage River iron ore project officially opened. May 18 Batman Bridge crossing the Tamar River is opened. July 1 Full adult franchise granted for Legislative Council elections. 1969 May 30 Floods in Launceston. December 24 Copper smelter at Mt Lyell closes. 1970 Tasmanian schools begin teaching metric system. Marine research laboratories established at Taroona. April Visit by Royal family. December 8 National Parks and Wildlife Act proclaimed. 1971 Australian troops begin withdrawing from Vietnam. March 12 APPM's Wesley Vale paper mill begins production. April Lake Pedder Action Committee formed to campaign against Hydro-Electric Commission Gordon River dam construction. First shipment of woodchips leaves Tasmanian Pulp and Forest Holdings Ltd Triabunna mill. July 2 Bell Bay thermal power station commences. August 14 The first State Aboriginal Conference held, Launceston. 1972 February Tasmanian College of Advanced Education, Hobart opened. May 23 Woodchip plant at Long Reach on the Tamar begins operations. June 27 Princess of Tasmania makes last Bass Strait crossing, before being replaced by the Empress of Australia. July 14 Maria Island National Park proclaimed. November Tasmanian Aboriginal Information Centre (later Tasmanian Aboriginal Centre) established. December 19 Electrolytic Zinc Company begins trial dumping of jarosite waste at sea. 1973 General voting age for electors lowered to 18 years of age. February 10 Hobart casino officially opened, being the first legally sanctioned casino in Australia. March 16 Mersey-Forth power scheme officially opened. October 3 Mt William National Park proclaimed. 1974 January 11 Environment Protection Act comes into effect to control industrial pollution. May 17 Bell Bay-Launceston rail link opened. December 9 TAB begins operations. December 31 Hobart suburban rail services cease. 1975 January 5 Tasman Bridge, Hobart brought down by the Lake Illawarra causing 12 deaths. February 28 Colour television first introduced in Tasmania. December 19 Rokeby Police Academy completed. 1976 Freight subsidy scheme introduced for sea-cargo to Tasmania. January 5 Family Law Court established in Tasmania (under the Federal Family Law Act) for handling of divorce cases. April 30 Truganini's remains ritually cremated by Aboriginal community. July 7 Asbestos Range National Park proclaimed. August 23 Tasmanian Wilderness Society formed. 1977 Federal Inquiry conducted by Sir Bede Callaghan into Tasmanian industry and employment commences. March During a Royal visit, Aboriginal activist Michael Mansell presents Queen Elizabeth II with a land rights claim. May 19 Tasmanian Film Corporation established. October 8 Tasman Bridge, Hobart re-opens for traffic. November 17 State Fire Authority established. 1978 Hydro-Electric Commission report proposes a further power development scheme involving the Gordon, Franklin and King Rivers. July 28 Tasman Ltd ceases operations, marking the end of regular passenger train services in Tasmania. 1979 Tasmanian College of Advanced Education moves to Launceston. March Tasmanian Parliamentary Hansard introduced. April 27 Gordon Power scheme, stage 1 opened. May 29 State's first ombudsman appointed. 1980 A Select Committee recommends the Gordon-below-Franklin dam as the next HEC development option. May 17 Australian Maritime College at Beauty Point opened. July 29 Gillian James becomes Tasmania's first female minister. December 12 Antarctic Division, Kingston completed. 1981 Bushfires in Zeehan destroy 40 houses. April 21 Devonport proclaimed a city. April 30 Wild Rivers National Park proclaimed. June 24 Walls of Jerusalem National Park proclaimed. October 5 Royal visit by Queen Elizabeth II and Prince Philip, Duke of Edinburgh. December 12 Referendum held on preferred HEC schemes: 47% voting in favour of Gordon-below-Franklin scheme 8% for Gordon-above-Olga 45% voting informally. 1982 March 11 Macintosh power station (the first stage of the Pieman River scheme) begins operating. May 13 Launceston Federal Country Club casino opened. December 12 Tasmanian Wilderness World Heritage Area proclaimed including the Southwest, Franklin-Lower Gordon Wild Rivers, and Cradle Mountain-Lake St Clair National Parks. 1983 Tasmanian Aboriginal Land Council established. March 25 Tasmanian shearers join national strike over use of wide combs. March 30 Royal visit by Prince Charles and Princess Diana. March 31 Federal regulations passed blocking construction of the Franklin HEC dam. July 1 The High Court rules in favour of Federal sovereignty, thus putting an end to the Gordon-below-Franklin power scheme. 1984 February 23 Bowen Bridge across the Derwent officially opened. June 18 A fire causes extensive damage to Hobart's historic Theatre Royal. December Launceston International Velodrome completed. 1985 March The last of Tasmania's drive-in theatres close at Elwick and Mowbray. May CSIRO Marine Laboratories opened, Hobart. May 4 A four-day cremation ceremony held at Oyster Cove for Aboriginal remains retrieved from the State's museums. May 23 Saltwater Salmonid Culture Act provides Salmon Enterprises of Tas. Pty Ltd with a 10-year monopoly on Australian salmon smolt production. June 2 Empress of Australia makes last Bass Strait crossing before being replaced by the Abel Tasman. 1986 March 7 Confrontations between forestry workers and conservationists erupt at Farmhouse Creek in the south. November 27 Pope John Paul II visits Hobart and holds mass for 32,000 people at Elwick racecourse. 1987 November 29 Launch of the replica of the tall ship Lady Nelson. December 23 Antarctic supply ship Nella Dan sinks off Macquarie Island. 1988 January Bicentennial celebrations include a visit by an international fleet of Tall ships. March A High Court decision is passed preventing logging in areas of Lemonthyme and Southern Forests nominated for World Heritage Listing. April 24 Royal tour by Queen Elizabeth II. April 26 Burnie proclaimed a city. November 24 Clarence proclaimed a city. 1989 March 15 Controversial Plans for a pulp mill at Wesley Vale scrapped as financial backers pull out in face of tougher environmental controls imposed by the Federal Government. May 29 An experimental Labor-Green accord is struck between 5 Independents and the Labor Party to form Government following the State elections. June A vote of no-confidence in Robin Gray's minority Liberal Government leads to Gray's resignation and Labor leader, Michael Field, being sworn in as Premier. September Amalgamation of Tasmania's three tertiary education institutions begins. December 27 Douglas-Apsley National Park declared.


text:
Bikini Girls Claw Machine: Catch Prizes with Help!
60 0
Send your message to this supplier
Sexy Bikini Girls Sit in the claw machine,helping Catch the Prize !!!! Woderful Calw machine you never seen it before ! More Claw machine information: More information,pls review: HomingGame►http://www.hominggame.com Game-Made-IN-china►htpp://www.game-made-in-china.com GameTube►http://www.gametube.hk Youtube Suscribe us►https://www.youtube.com/user/HomingGame Facebook► https://www.facebook.com/hominggame Wechat,Whatsapp,mobile phone No►+8618688409495
Published 6 year ago
Category Video / Crane Machine
Tagsclaw machine crane machine claw game machine claw prize game machine crane macine crane game machine toy prize game machine claw prize vending machine prize machine prize game machine prize vending machine game machine arcade game machine coin operated game machine indoor game machine slot game machine amusement park game equipment game equipment gaming machine family entertainment entertainment game machine sexy girl sexy bikini girl bikini girl games

subset: commoncrawl


text:
'24: Live Another Day' Clocks First Photo: Jack and Chloe on the Run Again
Much as we loved the Super Bowl teaser for Jack Bauer's big '24: Live Another Day' return, we knew the spot had been created specifically for the game without featuring any actual footage from the series. That changes today with our first look at Jack and Chloe back in action for the first official photo of '24: Live Another Day'!
Via Entertainment Weekly, the first official photo from Kiefer Sutherland's '24' return strikes tonally similar to the preview, emphasizing a bit of action for Jack and Chloe (Mary Lynn Rajskub). Chloe herself appeared injured in the first spot, though here she looks to be leading the way for Jack, having spent the intervening years working against the government for a WikiLeaks-type organization.
'24: Live Another Day' will premiere the first two installments of 12 all-new episodes on May 5 with a cast that includes 'Game of Thrones' star Michelle Fairley (replacing Judy Davis), 'Dexter"s Yvonne Strahovski, 'Hostages' star Tate Donovan, Stephen Fry, Kim Raver's Audrey Raines, Benjamin Bratt as the head of CIA operations in London, and Michael Wincott as an infamous hacker. 'Live Another Day' will also have the returning '24′ team of writers/producers Howard Gordon ('Homeland'), Evan Katz, Manny Coto, David Fury, Robert Cochran, Brian Grazer, Jon Cassar and Kiefer Sutherland.
Take a look the first photo from '24: Live Another Day' above, re-watch the Super Bowl teaser below, and tell us in the comments what you want to see from Jack Bauer's big return!


text:
Create a Website Account - Manage notification subscriptions, save form progress and more.
3317 Chicago Road
South Chicago Heights, IL 60411
Phone: 708-755-1880
Fax: 708-755-1881
No. The violation must be heard by a hearing officer who makes a determination of liability.
If a determination of liability is found the hearing officer sets a fine amount based upon ordinance and history. After the fine amount is set you may pay the fine at the South Chicago Heights Police Department, Monday to Friday from 7 a.m. to 7 p.m. Payment methods accepted include:
Show All Answers
Parking and Compliance tickets can be paid one of two ways:
Per South Chicago Heights Ordinance 50-165 it shall be unlawful and prohibited for any person under the age of 17 years to be upon any public road, street, alley, park or lands used for public purposes; to be in any public place of business or amusement in the village or to operate or use a motor vehicle anywhere within the corporate limits of village at the between:
There are a variety of situations that might qualify as nuisance pet complaints; barking dogs, dogs-at-large, and pets left unattended are just a few.
You can call the non-emergency number 708-754-7131 or 708-755-3520 and an officer will be sent to your location to take appropriate action.
Stray animals are taken to the County Line Animal Hospital located at:3312 Chicago RoadSteger, IL 60475Phone: 708-754-2351
No. Per village ordinance 34-230 it is unlawful for any person to have in his/her possession or to discharge any firework(s) enumerated in section 34-229. State law also prohibits the possession and discharge of fireworks in the state of Illinois.
The police department strictly enforces violations of the village ordinance pertaining to fireworks.
Yes. It is a violation of state and local law for anyone to walk in the street/roadway when there is a sidewalk provided.
Compliance/parking tickets can be paid prehearing. If you wished to contest the citation and miss the hearing date (1st notice) you will have two more chances to attend the hearing. The fine cost will go up after every notice to appear/contest.
Building/Ordinance violations are a must appear. Your court date is located at the bottom right corner of the violation and also on the notice to appear letter you receive in the mail. If you are unable to appear at the hearing date assigned contact the department by calling 708-755-3521 prior to the hearing to receive another hearing date.
Your court information is in the lower right corner of your citation. Court dates also appear on the bond you received at booking. If you miss your first assigned court date generally you will be notified of a second chance to appear. Missing court may result in a warrant for your arrest or suspended driver's license.


text:
Open writing projects/Python all a scientist needs
This page is part of the Open Writing Project Python_all_a_scientist_needs. (More Open Writing Projects.) |
This article has been published on the arXiv (arXiv:0803.1838). Authors: Julius B. Lucks |
This article has been presented at Pycon 2008 (slides) |
Author: Julius B. Lucks
This is a paper/presentation for Pycon 2008 that I wrote on OWW. The paper is about how I used python and its libraries and extensions as a complete scientific programming package for a recent comparitive genomics study.
This paper was written here, and now appears on the arXiv - arXiv:0803.1838. Please leave comments on the Talk Page or email me at julius.lucks (at (gmail.com)).
- Leave Comments
- Source Code Examples
- Talk Slides
- Presentation
- Read the blog posts about this article: 1, 2, 3, 4, 5, 6
Any cutting-edge scientific research project requires a myriad of computational tools for data generation, management, analysis and visualization. Python is a flexible and extensible scientific programming platform that offered the perfect solution in our recent comparative genomics investigation [1]. In this paper, we discuss the challenges of this project, and how the combined power of Biopython [2], Matplotlib [3] and SWIG [4] were utilized for the required computational tasks. We finish by discussing how python goes beyond being a convenient programming language, and promotes good scientific practice by enabling clean code, integration with professional programming techniques such as unit testing, and strong data provenance.
The Scientists Dilemma
A typical scientific research project requires a variety of computational tasks to be performed. At the very heart of every investigation is the generation of data to test hypotheses. An experimental physicist builds instruments to collect light scattering data; a crystallographer collects X-ray diffraction data; a biologist collects flouresence intensity data for reporter genes, or dna sequence data for these genes; and a computational researcher writes programs to generate simulation data. All of these scientists use computer programs to control instruments or simulation code to collect and manage data in an electronic format.
Once data is collected, the next task is to analyze it in the context of hypothesis-driven models that help them understand the phenomenon they are studying. In the case of light, or X-ray scattering data, there is a well-proven physical theory that is used to process the data and calculate the observed structure function of the material being studied [5]. This structure function is then compared to predictions made by the hypotheses begin tested. In the case of biological reporter gene data, light intensity is matched up with phenotypic traits or DNA sequences, and statistically analyzed for trends that might explain the observed patterns.
As these examples illustrate, across science, the original raw data of each investigation is extensively processed by computational programs in an effort to understand the underlying phenomena. Visualization tools to create a variety of scientific plots are often a preferred tool for both troubleshooting ongoing experiments, and creating publication-quality scientific plots and charts. These plots and charts are often the final product of a scientific investigation in the form of data-rich graphics that demonstrate the truth of a hypothesis compared to its alternatives [6].
Unfortunately, all too often scientists resort to a grab-bag of tools to perform these varied computational tasks. For physicists and theoretical chemists, it is common to use C or FORTRAN to generate simulation data, and C code is used to control experimental apparatus; for biologists, perl is the language of choice to manipulate DNA sequence data [7]. Data analysis is performed in separate, external software packages such as Matlab or Mathematica for equation solving [8, 9], or Stata, SPSS or R for statistical calculations [10, 11, 12]. Furthermore, separate data visualization packages can be used, making the scientific programming toolset extremely varied.
Such a mixed bag of tools is an inadequate solution for a variety of reasons. From a computational perspective, most of these tools cannot be pipelined easily which necessitates many manual steps or excessive glue code that most scientists are not trained to write. Far more important than just an inconvenience associated with gluing these tools together is the extreme burden placed on the scientist in terms of data management. In such a complicated system there are often a plethora of different data files in several different formats residing at many different locations. Most tools do not produce adequate metadata for these files, and scientists typically fall back on cryptic file naming schemes to indicate what type of data the files contain and how it was generated. Such complications can easily lead to mistakes. This in turn provides poor at best data provenance when it is in fact of utmost importance in scientific studies where data integrity is the foundation of every conclusion reached and every fact established.
Furthermore, when data files are manually moved around from tool to tool, it is not clear if an error is due to program error, or human error in using the wrong file. Analyses can only be repeated by following work flows that have to be manually recorded in a paper or electronic lab notebook. This practice makes steps easily forgotten, and hard to pass on to future generations of scientists, or current peers trying to reproduce scientific results.
The Python programming language and associated community tools [13] can help scientists overcome some of these problems by providing a general scientific programming platform that allows scientists to generate, analyze, visualize and manage their data within the same computational framework. Python can be used to generate simulation data, or control instrumentation to capture data. Data analysis can be accomplished in the same way, and there are graphics libraries that can produce scientific charts and graphs. Furthermore python code can be used to glue all of these python solutions together so that visualization code resides alongside the code that generates the data it is applied to. This allows streamlined generation of data and its analysis, which makes data management feasible. Most importantly, such a uniform tool set allows the scientist to record the steps used in data work flows to be written down in python code itself, allowing automatic provenance tracking.
In this paper, we outline a recent comparative genomics case study where python and associated community libraries were used as a complete scientific programming platform. We introduce several specific python libraries and tools, and how they were used to facilitate input of standardized biological data, create scientific plots, and provide solutions to speed bottle-necks in the code. Throughout, we provide detailed tutorial-style examples of how these tools were used, and point to resources for further reading on these topics. We conclude with ideas about how python promotes good scientific programing practices, and tips for scientists interested in learning more about python.
Comparative Genomics Case Study
Recently we performed a comparative genomics study of the genomic DNA sequences of the 74 sequenced bacteriophages that infect E. coli, P. aeruginosa, or L. lactis [1]. Bacteriophages are viruses that infect bacteria. The DNA sequences of these bacteriophages contain important clues as to how the relationship with their host has shaped their evolution.
Each virus that we examined has a DNA genome that is a long strand of four nucleotides called Adenine (A), Threonine (T), Cytosine (C), and Guanine (G). The specific sequences of A's, T's, C's and G's encode for proteins that the virus uses to take over the host bacteria and create more copies of itself. Each protein is encoded in a specific region of the genomic DNA called a gene.
Proteins are made up of linear strings of 20 amino acids. There are 4 bases encoding for 20 amino acids, and the translation table that governs the encoding, called the genetic code, is comprised of 3 base triplets called codons. Each codon encodes a specific amino acid. Since there are 64 possible codons, and only 20 amino acids, there is a large degeneracy in the genetic code. For more information on the genetic code, and the biological process of converting DNA sequences into proteins, see [14].
Because of this degeneracy, each protein can be 'spelled' as a sequence of codons in many possible ways. The particular sequence of codons used to spell a given protein in a gene is called the gene's 'codon usage'. As we found in [1], Bacteriophages genomes favor certain codon spellings of genes over the other possibilites. The primary question of our investigation was - does the observed spellings of the bacteriophage genome shed light onto the relationship between the bacteriophage and its host [1]?
To address this question, we examined the codon usage of the protein coding genes in these bacteria for any non-random patterns compared to all the possible spellings, and performed statistical tests to associate these patterns with certain aspects about the proteins.
The computational requirements of this study included:
- Downloading and parsing the genome files for viruses from GenBank in order to get the genomic DNA sequence, the gene regions and annotations: GenBank [15] is maintained by the National Center of Biotechnology Information (NCBI), and is a data wharehouse of freely available DNA sequences. For each virus, we needed to obtain the genomic DNA sequence, the parts of the genome that code for genes, and the annotated function of these genes. Figure 1 displays this information for lambda phage, a well-studied bacteropphage that infects E. coli [14], in GenBank format, obtained from NCBI. Once these files were downloaded and stored, they were parsed for the required information.
- Storing the genomic information: The parsed information was stored in a custom genome python class which also included methods for retrieving the DNA sequences of specific genes.
- Drawing random genomes to compare to the sequenced genome: For each genome, we drew random genomes according to the degeneracy rules of the genetic code so that each random genome would theoretically encode the same proteins as the sequenced genome. These genomes were then visually compared to the sequenced genome through zero-mean cumulative sum plots discussed below.
- Visualize the comparisons through 'genome landscape' plots: Genome landscapes are zero-mean cumulative sums, and are useful visual aids when comparing nucleotide frequency properties of the genomes they are constructed from (see [1] for more information). Genome landscapers were computed for both the sequenced genome, and each drawn genome. The genome landscape of the sequenced genome was compared to the distribution of genome landscapes generated from the random genomes to detect regions of the genomes that have extremely non-random patterns in codon usage.
- Statistically analyzing the non-random regions with annotation and host information: To understand the observed trends, we performed analysis of variance (ANOVA) [16] analysis to detect correlations between protein function annotation or host lifestyle information with these regions.
Figure 1 Lambda phage GenBank file snippet. The full file can be found online - see [17].
LOCUS NC_001416 48502 bp DNA linear PHG 28-NOV-2007 DEFINITION Enterobacteria phage lambda, complete genome. ACCESSION NC_001416 VERSION NC_001416.1 GI:9626243 PROJECT GenomeProject:14204 KEYWORDS . SOURCE Enterobacteria phage lambda ORGANISM Enterobacteria phage lambda Viruses; dsDNA viruses, no RNA stage; Caudovirales; Siphoviridae; Lambda-like viruses. REFERENCE 1 (sites) AUTHORS Chen,C.Y. and Richardson,J.P. TITLE Sequence elements essential for rho-dependent transcription termination at lambda tR1 JOURNAL J. Biol. Chem. 262 (23), 11292-11299 (1987) PUBMED 3038914 ... FEATURES Location/Qualifiers source 1..48502 /organism="Enterobacteria phage lambda" /mol_type="genomic DNA" /specific_host="Escherichia coli" /db_xref="taxon:10710" gene 191..736 /gene="nu1" /locus_tag="lambdap01" /db_xref="GeneID:2703523" CDS 191..736 /gene="nu1" /locus_tag="lambdap01" /codon_start=1 /transl_table=11 /product="DNA packaging protein" /protein_id="NP_040580.1" /db_xref="GI:9626244" /db_xref="GeneID:2703523" /translation="MEVNKKQLADIFGASIRTIQNWQEQGMPVLRGGGKGNEVLYDSA AVIKWYAERDAEIENEKLRREVEELRQASEADLQPGTIEYERHRLTRAQADAQELKNA RDSAEVVETAFCTFVLSRIAGEIASILDGLPLSVQRRFPELENRHVDFLKRDIIKAMN KAAALDELIPGLLSEYIEQSG" ... ORIGIN 1 gggcggcgac ctcgcgggtt ttcgctattt atgaaaattt tccggtttaa ggcgtttccg 61 ttcttcttcg tcataactta atgtttttat ttaaaatacc ctctgaaaag aaaggaaacg 121 acaggtgctg aaagcgaggc tttttggcct ctgtcgtttc ctttctctgt ttttgtccgt 181 ggaatgaaca atggaagtca acaaaaagca gctggctgac attttcggtg cgagtatccg 241 taccattcag aactggcagg aacagggaat gcccgttctg cgaggcggtg gcaagggtaa 301 tgaggtgctt tatgactctg ccgccgtcat aaaatggtat gccgaaaggg atgctgaaat 361 tgagaacgaa aagctgcgcc gggaggttga agaactgcgg caggccagcg aggcagatct 421 ccagccagga actattgagt acgaacgcca tcgacttacg cgtgcgcagg ccgacgcaca ...
Python was used in every aspect of this computational work flow. Below we discuss in more detail how python was used in several of these areas specifically, and provide illustrative tutorial-style examples. For more information on the details of the computational work flow, and the biological hypotheses we tested, see [1]. For specific details on the versions of software used in this paper, and links to free downloads, see Materials and Methods.
Biopython is an open-source suite of bioinfomatics tools for the python language [2]. The suite is comprehensive in scope, and offers python modules and routines to parse bio-database files, facilitate the computation of alignments between biological sequences (DNA and protein), interact with biological web-services such as those provided by NCBI, and examine protein crystallographic data to name a few.
In this project, Biopython was used both to download and parse genomic viral DNA sequence files from the NCBI Genbank database [15] as outlined in Example 1.
Example 1: Downloading and parsing the GenBank genome file for lambda phage (refseq number NC_001416). (download the source code) <syntax type="python">
- genbank.py - utilities for downloading and parsing GenBank files
from Bio import GenBank # (1) from Bio import SeqIO
def download(accession_list):
Download and save all GenBank records in accession_list. try: handle = GenBank.download_many(accession_list) # (2) except: print "Are you connected to the internet?" raise genbank_strings = handle.read().split('//\n') # (3) for i in range(len(accession_list)): #Save raw file as .gb gb_file_name = accession_list[i]+'.gb' f = open(gb_file_name,'w') f.write(genbank_strings[i]) # (4) f.write('//\n') f.close()
def parse(accession_list):
Parse all records in accession_list. parsed = [] for accession_number in accession_list: gb_file_name = accession_number+'.gb' print 'Parsing ... ',accession_number try: gb_file = file(gb_file_name,'r') except IOError: print 'Is the file %s downloaded?' % gb_file_name raise gb_parsed_record = SeqIO.parse(gb_file,"genbank").next() # (5) gb_file.close() print gb_parsed_record.id # (6) print gb_parsed_record.seq parsed.append(gb_parsed_record) # (7) return parsed
<syntax type="python"> import genbank # (8) genbank.download(['NC_001416']) genbank.parse(['NC_001416']) </syntax>
(1) The biopython module is called Bio. The Bio.Genbank module is used to download records from GenBank, and the Bio.SeqIO module provides a general interface for parsing a variety of biological formats, including GenBank.
(2) The Bio.GenBank.download_many method is used in the genbank.download method to download Genbank records over the internet. It takes a list of GenBank accession numbers identifying the records to be downloaded.
(3) GenBank records are separated by the character string '//\n'. Here we manually separate GenBank files that are part of the same character string.
(4) When we save the GenBank records as individual files to disk, we include the '//\n' separator again.
(5) The Bio.SeqIO.parse method can parse a variety of formats. Here we use it to parse the GenBank files on our local disk using the "genbank" format parameter. The method returns a generator, who's next() method is used to retrieve an object representing the parsed file.
(6) The object representing the parsed GenBank file has a variety of methods to extract the record id and sequence. See Example 2 for more details.
(7) The genbank.parse method returns a listed of parsed objects, one for each input sequence file.
(8) To run the code in genbank.py, Biopython 1.44 must first be installed (see Materials and Methods). Executing the following code should create a file called 'NC_001416.gb' on the local disk (see Figure 1), as well as produce the following output:
Parsing ... NC_001416 NC_001416.1 Seq('GGGCGGCGACCTCGCGGGTTTTCGCTATTTATGAAAATTTTCCGGTTTAAGGCGTTTCCG ...', IUPACAmbiguousDNA())
The benefits of using Biopython in this project are several including
- Not having to write or maintain this code ourselves. This is an important point as the number of web-available databases and services grows. These often change rapidly, and require rigorous maintenance to keep up with tweaks to API's and formats - a monumental task that is completed by an international group of volunteers for the Biopython project.
- The Biopython parsing code can be wrapped in custom classes that make sense for a particular project. Example 2 illustrates the latter by outlining a custom genome class used in this project to store the location of coding sequences for genes (CDS_seq).
Example 2: A custom Genome class which wraps the biopython parsing code outlined in Example 1. (download the source code) <syntax type="python">
- genome.py - a custom genome class which wraps biopython parsing code
import genbank # (1) from Bio import Seq from Bio.Alphabet import IUPAC
class Genome(object):
"""Genome - representing a genomic DNA sequence with genes Genome.genes[i] returns the CDS sequences for each gene i.""" def __init__(self, accession_number): genbank.download([accession_number]) # (2) self.parsed_genbank = genbank.parse([accession_number])[0] self.genes = [] self._parse_genes() def _parse_genes(self): """Parse out the CDS sequence for each gene.""" for feature in self.parsed_genbank.features: # (3) if feature.type == 'CDS': #Build up a list of (start,end) tuples that will #be used to slice the sequence in self.parsed_genbank.seq # #Biopython locations are zero-based so can be directly #used in sequence splicing
locations = [] if len(feature.sub_features): # (4) # If there are sub_features, then this gene is made up # of multiple parts. Store the start and end positins # for each part. for sf in feature.sub_features: locations.append((sf.location.start.position, sf.location.end.position)) else: # This gene is made up of one part. Store its start and # end position. locations.append((feature.location.start.position, feature.location.end.position))
# Store the joined sequence and nucleotide indices forming # the CDS. seq = # (5) for begin,end in locations: seq += self.parsed_genbank.seq[begin:end].tostring()
# Reverse complement the sequence if the CDS is on # the minus strand if feature.strand == -1: # (6) seq_obj = Seq.Seq(seq,IUPAC.ambiguous_dna) seq = seq_obj.reverse_complement().tostring()
# append the gene sequence self.genes.append(seq) # (7)
(1) Here we import the genbank module outlined in Example 1, along with two more biopython modules. The Bio.Seq module has methods for creating DNA sequence objects used later in the code, and the Bio.Alphabet module contains definitions for the types of sequences to be used. In particular we use the Bio.Alphabet.IUPAC definitions.
(2) We use the genbank methods to download and parse the GenBank record for the input accession number.
(3) The parsed object stores the different parts of the GenBank file as a list of features. Each feature has a type, and in this case, we are looking for features with type 'CDS', which stores the coding sequence of a gene.
(4) For many organisms, genes are not contiguous stretches of DNA, but rather are composed of several parts. For GenBank files, this is indicated by a feature having sub_features. Here we gather the start and end positions of all sub features, and store them in a list of 2-tuples. In the case that the gene is a contiguous piece of DNA, there is only one element in this list.
(5) Once the start and end positions of each piece of the gene are obtained, we use them to slice the seq of the parsed_genbank object, and collect the concatenated sequence into a string.
(6) Since DNA has polarity, there is a difference between a gene that is encoded on the top, plus strand, and the bottom, minus strand. The strand that the gene is encoded in is stored in feature.strand. If the strand is the minus strand, we need to reverse compliment the sequence to get the actual coding sequence of the gene. To do this we use the Bio.Seq module to first build a sequence, then use the reverse_complement() method to return the reverse compliment.
(7) We store each gene as an element of the Genome.genes list. The CDS of the ith gene is then retrievable through Genome.genes[i].
For a more detailed introduction to the plethora of biopython features, as well as introductory information into python see [18] .
Matplotlib [3] is a suite of open-source python modules that provide a framework for creating scientific plots similar to the Matlab [8] graphical tools. In this project, matplotlib was used to create genome landscape plots both to have a quick look at data as it was generated, and to produce publication quality figures. Genome landscapes are cumulative sums of a zero-mean sequence of numbers, and are useful visualization tools for understanding the distribution of nucleotides across a genome (see [1] for more information).
Example 3 outlines how matplotlib was used to quickly generate graphics to test raw simulation data as it was being generated.
Example 3: Sample matplotlib script that calculates and plots the zero-mean cumulative sum of the numbers listed in a single column of an input file. (download the source code)
<syntax type="python">
- landscape.py - plotting a zero-mean cumulative sum of numbers
import fileinput # (1) import numpy from matplotlib import pylab
def plot(filename):
"""Read single-column numbers in filename and plot zero-mean cumulative sum""" numbers = [] for line in fileinput.input(filename): # (2) numbers.append(float(line.split('\n')[0])) mean = numpy.mean(numbers) # (3) cumulative_sum = numpy.cumsum([number - mean for number in numbers]) pylab.plot(cumulative_sum[0::10],'k-') # (4) pylab.xlabel('i') pylab.title('Zero Mean Cumulative Sum') pylab.savefig(filename+'.png') # (5) pylab.show()
(1) We use several python community modules to plot the zero-mean cumulative sum. As part of the python standard library, fileinput can be used as a quick an easy solution to reading in a file containing a column of entries. numpy is a comprehensive python project aimed at providing numerical routines for scientific applications [19]. Finally we import the matplotlib.pylab module which provides a Matlab-like plotting environment.
(2) Here we use fileinput to read successive lines of the input file, which takes care of opening and closing the input file automatically. Notice that we split each line by the newline character '\n', and take everything to the left of it, assuming that each line contains a single number.
(3) The numpy module provides many convenient methods such as mean to compute the mean of a list of numbers, and cumsum which computes the cumulative sum. To shift the input numbers by the mean, we use a python list comprehension to subtract the mean from each number, and then input the shifted list to numpy.cumsum.
(4) The pylab module presents a Matlab-like plotting environment. Here we use several methods to create a basic line plot with an xlabel and title.
(5) To view the plot, we use pylab.show(), after we have saved the figure as a PNG file using pylab.savefig. The following script uses the genome class outlined in Example 2, along with the landscape class to plot the GC-landscape for the lambda phage genome. The genome class is used to download and parse the GenBank file for lambda phage. Each gene sequence is then scanned for 'G' or 'C' nucleotides. For every 'G' or 'C' nucleotide encountered, a 1 is appended to the list GC; for every 'A' or 'T' encountered, a 0 is appended. This sequence of 1's and 0's representing the GC-content of the lambda phage genome is saved in a file, and input into the landscape.plot method. A plot corresponding to executing this stript is shown in Figure 2.
<syntax type="python"> import genome,landscape lambda_phage = genome.Genome('NC_001416') GC = [] for gene_sequence in lambda_phage.genes:
for nucleotide in gene_sequence: if nucleotide == 'G' or nucleotide == 'C': GC.append(1) else: GC.append(0)
f = file('NC_001416.GC','w') for num in GC:
f.write('%i\n' % num)
Figure 2: The lambda phage GC-landscape generated by the sample code in Example 3.
Matplotlib was also used to make custom graphics classes for creating publication-quality plots. To do this, we used the object oriented interface to matplotlib plotting routines to inherit funcionality in our classes.
The benefits of using matplotlib in this project were several:
- The code that produced the scientific plots resided alongside the code that produced the underlying data that was used to produce the plots. The importance of this cannot be stressed enough as having the code structured in this way removed many opportunities for human error involved in manually shuffling raw data files into separate graphical programs. Moreover, the instructions for producing the plots from the underlying raw data was python code, which not only described these instructions, but could be executed to produce the plots. Imagine instead the often practiced use of spreadsheets to create plots from raw data - in these spreadsheets, formulas are hidden by the results of the calculations, and it is often very confusing to construct a picture of the computational flow used to produce a specific plot.
- Having the graphics instructions in code allowed for quick trouble shooting when creating the plots, or evaluating raw data as it was generated.
- Complicated plots were easily regenerated by tweaking the code for particular graphical plots.
The Simple Wrapper and Interface Generator (SWIG) [4], is an easy-to-use system for extending python. In particular, it allows the speed up of selected parts of an application by writing these routines in another more low-level language such as C or C++. Furthermore, SWIG implements the use of this low-level code using the standard python module importing structure. This allows developers to first prototype code in python, then re-implement the code in C and SWIG causing no change in the python code that uses the re-implemented module.
This project relied heavily on drawing random numbers from an input discrete distribution. For example, we often needed to draw a sequence of A's, T's, C's or G's corresponding to the nucleotide sequence of the genome, but preserving the genomic distribution of these four nucleotide bases. For some viruses, the distribution might look like: [math]\displaystyle{ P_A = 0.2 }[/math], [math]\displaystyle{ P_T = 0.2 }[/math], [math]\displaystyle{ P_C = 0.3 }[/math], [math]\displaystyle{ P_G = 0.3 }[/math], with [math]\displaystyle{ P_A + P_T + P_C + P_G = 1.0 }[/math]. Example 4 illustrates the outline of a python module that has methods to draw numbers according to a discrete distribution with 4 possible outcomes. It also illustrates how this module could be implemented in C, and included in a python module with SWIG.
Example 4: Drawing random numbers from a specified discrete distribution with four possibilities. The python code to do this is shown first, followed by a re-implementation in C and inclusing in a python module with SWIG. The procedure for using SWIG is described below. (download the source code)
<syntax type="python">
- module discrete_distribution.py - drawing numbers from a discrete probability distribution
import random # (1)
def seed(): # (2)
def draw(distribution): # (3) Drawing an index according to distribution.
distribution is a list of floating point numbers, one for each index number, representing the probability of drawing that index number.
Example: [0.5, 0.5] would represent equal probabilities of returning a 0 or 1. sum = 0 # (4) r = random.random() for i in range(0,len(distribution)): sum += distribution[i] if r < sum: return i
<syntax type="python"> import discrete_distribution # (5) discrete_distribution.seed() print sum([discrete_distribution.draw([0.2,0.2,0.3,0.3]) for x in range(10000)])/10000. </syntax>
(1) Import the random number generator.
(2) We use the discrete_distribution.seed() method to seed the random number generator. If no arguments are supplied to random.seed(), the system time is used to seed the number generator [20].
(3) The draw function takes an argument distribution, which is a list of floating point numbers.
(4) The algorithm for drawing a number according to a discrete distribution is to draw a number, r, from a uniform distribution on [0,1]; compute a cumulative sum of the probabilities in the discrete distribution for successive indices of the distribution; when r is less than this cumulative sum, return the index that the cumulative sum is at.
(5) To test this code, plug in a distribution [0.2,0.2,0.3,0.3], draw 10000 numbers from this distribution, and compute the mean, which theoretically should be [math]\displaystyle{ 0*0.2 + 1*0.2 + 2*0.3 + 3*0.3 = 1.7 }[/math]. In this case, when this code was executed, the result [math]\displaystyle{ 1.7013 }[/math] was returned.
In the rest of the example, we implement this routine using C, and use SWIG to create a python module of the C implementation.
<syntax type="C"> //c_discrete_distribution.c - A C implementation of the discrete_distribution.py module
- include <stdlib.h> // (6)
- include <stdio.h>
- include <time.h>
void seed() {
srand((unsigned) time(NULL) * getpid());
int draw(float distribution[4]) { // (7)
float r= ((float) rand() / (float) RAND_MAX); float sum = 0.; int i = 0; for(i = 0; i < 4; i++) { sum += distribution[i];
if (r < sum) {
return i;
} </syntax>
(6) Here we define two functions, seed and draw, which correspond to the python methods in discrete_distribution.py. Note that the python implementation of discrete_distribution.draw() worked with distributions of arbitrary numbers of elements. For simplicity, we are restricting the C implementation to work with distributions of length 4.
(7) The draw routine is implemented using the same algorithm as in the python implementation. For simplicity, we use the C standard library rand() routine, although there are more advanced random number generators that would be more appropriate for scientific applications [21].
<syntax type="SWIG"> // c_discrete_distribution.i - A Swig interface file for the c_discrete_distribution module // (8)
%module c_discrete_distribution // (9)
// Grab a 4 element array as a Python 4-list // (10) %typemap(in) float[4](float temp[4]) { // temp[4] becomes a local variable
int i; if (PyList_Check($input)) { PyObject* input_to_tuple = PyList_AsTuple($input); if (!PyArg_ParseTuple(input_to_tuple,"ffff",temp,temp+1,temp+2,temp+3)) { PyErr_SetString(PyExc_TypeError,"tuple must have 4 elements"); return NULL; } $1 = &temp[0]; } else { PyErr_SetString(PyExc_TypeError,"expected a tuple."); return NULL; }
void seed(); // (11) int draw(float distribution[4]);
(8) To use SWIG, we create a swig interface file that describes how to translate python inputs to the C code, and C outputs to the python code.
(9) SWIG directives are preceded by the % sign. Here we declare that the module we are going to make is called c_discrete_distribution. In general, the module name, the C source name, and the interface file name should all be the same outside of the file extension.
(10) SWIG will automatically handle the conversion of many data-types from python to C and C to python. For illustration purposes, we create an explicit typemap which converts a 4-element python list into a 4 element C list of floats. Since we are using the typemap(in) directive, SWIG knows that we are converting python to C. The rest of the code checks that a list was passed from python to C, and the list has 4 elements. If these conditions are not met, python errors are thrown. If they are met, an array of floats called temp is called, and passed to C. This conversion is adapted from the SWIG reference manual [4].
(11) The last thing to do in the SWIG interface file is to declare the function signatures of the C implementation.
To use this module then, we have to call swig to generate wrapper code, then compile and link our code with the wrapper code. With SWIG installed, the procedure would look something like
swig -python -o c_discrete_distribution_wrap.c c_discrete_distribution.i
We first use SWIG to generate the wrapper code. Using the c_discrete_distribution.i interface file, SWIG will generate c_discrete_distribution_wrap.c using the Python C API, since we specified the -python flag. In addition, SWIG will also generate c_discrete_distribution.py, which we will use to import the module into our code.
gcc -c c_discrete_distribution.c c_discrete_distribution_wrap.c -I/usr/include/python2.5 -I/usr/lib/python2.5
Next we use a C compiler to compile each of the C files (our C source, and the SWIG generated wrapper). We have to include the python header files and libraries for the python version we are using. In our case, we used python 2.5. After this procedure completes, we should have two additional files: c_discrete_distribution.o and c_discrete_distribution_wrap.o .
gcc -bundle -flat_namespace -undefined suppress -o _c_discrete_distribution.so c_discrete_distribution.o c_discrete_distribution_wrap.o
The final step is to link them all together. The linking options are platform dependent, and the official SWIG documentation should be consulted [4]. For Mac OS X, we use the "-bundle -flat_namespace -undefined suppress" options for gcc. When this step is done, the file _c_discrete_distribution.so is created.
The python module file c_discrete_distribution.py can be used in the same way as in (5) above,
<syntax type="python"> import c_discrete_distribution as discrete_distribution discrete_distribution.seed() print sum([discrete_distribution.draw([0.2,0.2,0.3,0.3]) for x in range(10000)])/10000. </syntax>
This code produces the number 1.6942.
The benefits of using SWIG in this project were several:
- We used all the benefits of python with the increased speed for critical bottlenecks of our simulation code.
- The parts that were sped up were used in the exact same context through the python module import structure, removing the need for glue code to tie in external C-programs.
More generally, SWIG allows scientists using python to leverage experience in other languages that they typically have, while staying within the python framework with all its benefits outlined above. This promotes a scientific work flow which consists of prototyping simulation code using the more simple python, then profiling the python code to identify the speed bottlenecks. These can then be re-implemented in C or C++ and wrapped into the existing python code using SWIG. This is a much preferred methodology than writing unnecessarily complicated and error-prone C programs, and using glue code to integrate them within the larger simulation methodology.
There are several practical conclusions to draw for scientists. The first is that python, and its associated modules supported by the python community, offer a general platform for computing that is useful accross a broad range of scientific disciplines. We have only outlined several such tools in this article, but there exist many more relevant to scientists [22]. The second is that python and its community modules can easily be used by scientists. The clean nature of the code is quick to learn, and its high-level features make complicated tasks quick to accomplish. We have not discussed the interactive programming environments offered by python[23, 24], which when combined with the power of the language makes prototyping ideas and algorithms extremely easy.
The bigger picture conclusion is that python promotes good scientific practice. The code readability and package structure enables code to be easily understood by different researchers working on the same project. In fact, python code is often self-documenting which allows researchers to go back to code they wrote in the past and easily understand it. Python and its community modules provide a consistent framework to generate data, and shuttle it to the various analysis tasks. This in turn promotes data provenance through a written record in code of every step used to analyze specific data, which removes many manual steps, and thus many errors.
Finally, by using python, scientists can start to use other community tools and practices originally designed for professional programmers, but also useful to scientists. The most important of these, but not discussed in this article, is unit testing, whereby test code is written alongside scientific code that tests to see if that code is working properly. This allows scientists to re-write aspects of the code, perhaps using a different algorithm, and to re-run the tests to see if it still works as they think it should. For large projects this is critical, and removes the need for often-used ad-hoc practices of looking at some sample data by eye, which is not only tedious, but not guaranteed to uncover subtle numerical bugs that could cause crucial mis-interpretation of scientific data.
Since python is a well-established language and has a large and active community, the resources available for beginners can be overwhelming. For the scientist interested in learning more about scientific programming in python, we recommend visiting the web page and mailing lists of the SciPy project for an introduction to scientific modules [22], and [25, 26] for excellent introductory python tutorials.
Materials and Methods
All code examples in this paper were written by the author. The particular versions of the relevant software used were: python 2.5, Biopython 1.44, MatPlotLib 0.91.2, and SWIG 1.3.33. Documentation and free downloads of this software are available at the following URLs:
- Python - http://python.org
- Biopython - http://biopython.org
- MatPlotLib - http://matplotlib.sourceforge.net
- SWIG - http://www.swig.org/
The author would like to thank Adrian Del Maestro, Joao Xavier, David Thompson and Stanley Qi for helpful comments during the preparation of this manuscript. The author also thanks the Miller Institute for Basic Research in Science at the University of California, Berkeley for support.
J. B. Lucks, D. R. Nelson, G. Kudla, J. B. Plotkin. Genome landscapes and bacteriophage codon usage, PLoS Computational Biology, 4, .1000001, 2008. (doi:10.1371/journal.pcbi.1000001)
The Biopython project homepage is at http://biopython.org, and the documentation can be found at http://biopython.org/wiki/Documentation .
The Matplotlib project homepage is at http://matplotlib.sourceforge.net, where the documentation can also be found.
The Simple Wrapper and Interface Generator (SWIG) project homepage is at http://www.swig.org, and the documentation can be found at http://www.swig.org/doc.html .
N. Ashcroft and N. Mermin Solid State Physics (Holt, Reinhart and Winston, New York 1976)
E. Tufte The Visual Display of Quantitative Information 2nd Ed. (Graphics Press, Cheshire CT)
L. Stein How Perl Saved the Human Genome Project (http://www.bioperl.org/wiki/How_Perl_saved_human_genome)
The Matlab programming environment is developed by Mathworks - http://www.mathworks.com/ .
The Mathematica software is developed by Wolfram Research - http://www.wolfram.com/ .
The Stata statistical software is developed by StataCorp - http://www.stata.com/ .
The SPSS statistical software is developed by SPSS - http://www.spss.com/ .
The R statistical programming project homepage is at http://www.r-project.org/ .
The Python project homepage is at http://python.org .
Alberts, Johnson, Lewis, Raff, Roberts, Walter Molecular Biology of the Cell 4th Ed (Garland Science).
The GenBank data repository can be found at http://www.ncbi.nlm.nih.gov/Genbank/ .
For information on the Analysis of Variances Statistical Method, see Julian Faraway Practical Regression and Anova using R, which can be found at http://cran.r-project.org/other-docs.html .
The GenBank file for lambda phage can be downloaded at http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?view=gb&query_key=2&db=genome&dopt=GenBank&WebEnv=0uj9mXDT19Ay4GjRqZc4ZfQ3nFqtqgmIyl7QQ9Z5yBnmr9I5vQIyYxZfp%40B6000ACE79795310_0000SID&WebEnvRq=1&term=&tool=query&qty=1
Bassi S (2007) A Primer on Python for Life Science Researchers. PLoS Comput Biol 3(11): e199. ([http://dx.doi.org/10.1371/journal.pcbi.0030199 doi:10.1371/journal.pcbi.0030199)
The numpy project provides a numerical backend for scientific applications. The project homepage is at http://numpy.scipy.org/ .
The python random module documentation can be found at http://docs.python.org/lib/module-random.html .
For an extensive discussion of random numbers, see Numerical Recipes in C Chapter 7, which can be found at http://www.nrbook.com/a/bookcpdf.php .
The SciPy project is aimed at collecting and developing scientific tools for python. The project homepage is at http://www.scipy.org/ .
The ipython project can be found at http://ipython.scipy.org/ .
F. Perez and B. Granger. IPython: A System for Interactive Scientific Computing, Computing in Science and Engineering, 2007. http://ieeexplore.ieee.org/iel5/5992/4160244/04160251.pdf?arnumber=4160251 .
Swaroop, C. H. A Byte of Python. http://www.ibiblio.org/swaroopch/byteofpython/read/ .
Pilgrim, M. Dive Into Python. http://www.diveintopython.org/ .


text:
Facebook Badge
147 Million Orphans Blog
how many hits?
Powered by Blogger.
Wednesday, July 29, 2009
I love this pics of all of these sweet little children eating their dinner....how precious are they?!
Our affidavit is finished and we should be receiving it tomorrow! We will then pack up a lot of other "info" that the African government wants to see and fedex it to Uganda. The courts open back up August 15 (I believe) and our info will be there waiting for them to give us a court date!!Our prayer is that we will travel to get sweet Josie Love in September. I AM SO EXCITED! Gwen Oatsvall (email@example.com) and I have started a new business. It is called 147 Million Orphans. We have been working on a website with products to sell to bring orphan awareness. The past few weeks have left my head spinning. We have been designing feed bags, messenger bags, t-shirts, hats etc.... Our site should be up and running within the next few weeks. You are going to LOVE our products. I have been so busy making decisions and making products that I haven't had much time to think about our wait for Josie. Just yesterday My heart began to ache for her. There is definitely something to be said for a "mother's love". Gosh, I already love that little girl with all of my heart. How is that possible? It is a God given love that I cannot explain. Such a miracle that it leaves me looking at my children daily asking "why me Lord? Why would you "choose me" to raise these lil miracles sent straight from Heaven?" With each child, I feel more and more blessed.
Sunday, July 12, 2009
New pics
As you guys may already know, Elle Minivich took a trip over to Africa, and while she was there, she stayed at Amani for a couple of days, which means...WE (along with the Oatsvalls) GOT NEW PICS OF JOSIE LOVE AND MATTY JOSEPH!! :) which is always a treat for our family, and the Oatsvall crew. Just about everytime one of our fams gets new pics, the others come over for a day to play (which we do VERY often anyways) and check out new pics, hang out, swim....and if it's a "successful day" COLD STONE! as much as we love getting the pictures it makes us long for both of them to come home! these summer dyas are just not the same without the whole crew... ;) we are so thankful for all the prayers to help bring these cuties home and cannot wait to have pictures of the whole family!
Josie walking...with some help from Elle :)
Left, Right, Left, Right...
We're comin' baby girl!
Love Ya'll
Mallory and Grace
Subscribe to:
Posts (Atom)
About Me
- suzanne
- I am a lover of Jesus. I have the most fabulous husband that anyone woman could ask for. The Lord has blessed us with 7 beautiful children. I started this blog so that friends and family could follow our trip to Uganda to visit Katie Davis. I have decided to keep blogging to help bring orphan awareness to the world around me.


text:
More than half of learners fail driving test
Figures released by the Driver and Vehicle Standards Agency show that of the 450,748 practical driving tests conducted in the second quarter of this year only 223,037 resulted in a pass - a rate of 49.5 per cent.
That's still a slight improvement (1.33 per cent) on the same period in 2015 and also represents a three per cent increase in the total number of people sitting their test.
Hide AdAdvertisement
Hide AdThe number sitting their theory test climbed much more steeply, with 579,136 taking the test but the pass rate actually fell compared with the same period last year with a total of 293,080 succeeding - a pass rate of 51 per cent.
The latests figures follow the recent announcement by the DVSA of proposed changes to the driving test to better prepare learners for a life behind the wheel.
The proposals include increasing the 'independent driving' part of the test from 10 to 20 minutes; asking candidates to follow directions on a sat nav as an alternative to following road signs; replacing current manoeuvres such as 'reverse around a corner' with more real life scenarios for example, driving into and reversing out of a parking bay; asking one of the two vehicle safety questions while the candidate is driving.
DVSA Chief Executive, Gareth Llewellyn, said: "Great Britain's roads are among the safest in the world. But there is scope to do more to keep road users safe - particularly newly qualified drivers.
"Making sure the test better assesses a driver's ability to drive safely and independently is part of our strategy to help every driver through a lifetime of safe driving."


text:
February 6, 2013
2012 total compensation summary statements available in HRIS
The 2012 total compensation summary statements are now available for all benefit-eligible employees and may be accessed in HRIS/Employee Self Service.
Within HRIS, select Employee Self Service>Payroll and Compensation>View Total Compensation.
The first page provides an explanation of the statement and information about retirement savings plan limits for 2013. To view the total compensation summary statement, select the "Total Compensation Summary" button at the bottom of the page.
The 2012 total compensation summary statement shows wages paid in 2012 — pay issued from Jan. 6 to Dec. 21, 2012. The statement does not replace W-2 forms or other income tax related information and is not intended for use in tax preparation. Questions regarding the total compensation summary should be directed to email@example.com or 785-532-6277.


text: Just in time for the holiday season, we present our second annual Trademark Year in Wine and Beer. Whether you are planning a holiday party or just having some friends over, you are probably in the market for some liquid holiday cheer. Sure, you could make your beverage purchases based only on taste or price, but instead why not mix it up this year and pick a drink that was the subject of a recent notable trademark dispute?… More


text:
oneko - Man Page
NAME oneko
The program oneko creates a cute cat chasing around your mouse cursor.
oneko [-help] [-tora] [-dog] [-sakura] [-tomoyo] [-time n] [-speed n] [-idle n] [-name name] [-towindow] [-toname name] [-tofocus] [-position geometry] [-rv] [-noshape] [-fg] [-bg]
oneko changes your mouse cursor into mouse and creates a little cute cat and the cat starts chasing around your mouse cursor. If the cat catches the "mouse", it starts sleeping.
- -help
Prints help message on usage.
- -tora
Make cat into "tora-neko", a cat with tiger-like stripe.
- -dog
Runs a dog instead of a cat.
- -sakura
Runs Sakura Kinomoto instead of a cat.
- -tomoyo
Runs Tomoyo Daidouji instead of a cat.
- -time interval
Sets interval timer which determine intervals for cat animation. Default value is 125000 and unit is micro-second. Smaller value makes cat run faster.
- -speed distance
Specify the distance where cat jumps at one move in dot resolution. Default is 16.
- -idle speed
Specify the threshold of the speed which "mouse" running away to wake cat up.
- -name name
Specify the window name of cat.
- -towindow
When oneko starts with this option, you must select a window by cursor. Then cat appears and starts chasing the window instead of mouse. You can select another running oneko as the target window. If root window is selected, cat chases mouse as usually. When the target window is not in sight and not closed, cat chases mouse as usually. If the target window is closed, this program exit.
- -toname name
Specify the window name of target to make cat chase it instead of mouse. You can specify another running oneko as the target window. When the target window is not in sight and not closed, cat chases mouse as usually. If the target window is closed, this program exit.
- -tofocus
Makes cat run to and on top of focus window. When focus window is not in sight, cat chases mouse as usually.
- -position geometry
Specify X and Y offsets in pixels to adjust position of cat relative to mouse pointer.
- -rv
Reverse background color and foreground color.
- -noshape
Don't use SHAPE extension.
- -fg color
Foreground color.
- -bg color
Background color.
Application name is "neko"(or "tora") and class name is "Oneko".
- tora
Set "True" if you want "tora-neko".
- time
Sets interval timer in micro-second.
- speed
Sets distance to jump in pixel.
- idle
Sets speed threshold to wake cat up when "mouse" running away.
- noshape
Set "True" if you don't want to use SHAPE extension.
- reverse
Set "True" if you want to switch foreground and background color.
- foreground
Foreground color.
- background
Background color.
While this program uses XGetDefault, be sure to use "neko.resouce" form. If you run this program as "tora", by hard or soft link, the -tora option is enabled by default.
BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.
Sakura Kinomoto and Tomoyo Daidouji are characters in a comic strip "CARDCAPTOR SAKURA" (CLAMP, Kodansha), with the sanction indicated in CLAMP SCHOOL WEB CAMPUS (http://www.clamp.f-2.co.jp/).
Original xneko is written by Masayuki Koba and modified to oneko by Tatsuya Kato, and modified furthermore by John Lerchey, Eric Anderson, Toshihiro Kanda and Kiichiroh Mukose.
Send questions or problems to firstname.lastname@example.com


text:
Google (GOOG) and WhatsApp have reportedly been locked in negotiations about an acquisition for more than a month — and WhatsApp is pushing for nearly $1 billion valuation, Digital Trends recently reported. This sounds like a huge number, but even though WhatsApp has not released its user base estimate, it is widely assumed to be more than 300 million. This past New Year's Eve, WhatsApp processed more than 11 billion outbound messages. The company has started counting outbound and inbound messages separately due to the popularity of its group chat feature that has been one of the cornerstones of its franchise. WhatsApp has become a massively popular service on all continents, but it is particularly big in Europe and Latin America where its market penetration among smartphone users tops 80% in countries including Brazil, Spain, Portugal, the Netherlands and Germany.
However, there is one recent trend that explains why WhatsApp might be considering selling out right now: several rival messaging services have managed to gain apparent locks on major Asian markets such as China (WeChat), Korea (KakaoTalk) and Japan (LINE). Attempting to challenge any of these giants could require really deep pockets and major investments in areas like social gaming and location-based services, which are quickly becoming hugely popular add-ons for Asian messaging champions. As mighty as WhatsApp seems in Europe, Latin America and the United States, there is a small chance that the Asian challengers could leverage their gaming expertise to undermine it in coming years.
For both Google and Facebook (FB), essentially missing the messaging app revolution of 2010-2013 is a huge embarrassment. Google, of course, debuted the enormously popular Gmail service more than a half a decade ago and went on to vanquish the once formidable Hotmail service. Facebook's messaging feature has also been very popular for years. Perhaps the very success of these two platforms blinded Google and Facebook to the necessity of creating separate mobile messaging apps.
Facebook is now trying to fix its neglect in the messaging app space by binding text-messaging and photo-messaging tightly to Facebook messaging and placing the whole package smack in the center of its new Home service for Android phones. It would be a bitter blow for Facebook if Google could trumpet the acquisition of WhatsApp just when Facebook is trying to catch up in the messaging wars.
WhatsApp has a reputation for fierce independence and an ironclad anti-advertising philosophy. Selling out to a mobile ad champ like Google would be completely at odds with the company image — but a billion dollars have been known to turn a head or two. It would remain to be seen how WhatsApp fans would react to a Google takeover and how big the backlash over privacy issues would be. It is 100% certain that such a backlash would follow an acquisition.
For Google, the purchase would suddenly open delicious opportunities not only in the messaging app market, but also in the mobile game industry. Google could try to quickly revamp WhatsApp into a social game platform and thus copy the highly successful formula that Line and KakaoTalk have used to morph their messaging apps into lucrative mobile game marketing machines. This combined with the Facebook Home program might actually be the two triggers for the negotiations.
The acquisition would definitely give Apple (AAPL) some food for thought. The closed messaging system on the iPhone and iPad already runs the risk of getting left behind due to its proprietary nature.


text:
Osho Robbins is a frequent commenter on this blog who enjoys asking the guru of Radha Soami Satsang Beas (RSSB), Gurinder Singh Dhillon, probing questions.
Me, I'm not into gurus anymore. But I realize that many people who visit this blog are interested in what Dhillon has to say. So below is what Robbins shared in several email messages.
Since I was a member of RSSB for thirty-five years, I'm familiar with the organization's traditional teachings and books. Thus I was struck by a seeming contradiction in what Robbins says below.
On the one hand, Dhillon told Robbins that what's important is what the previous RSSB gurus said and what the scriptures say. On the other hand, Dhillon said the guru is only a guide and a teacher.
But that isn't what the traditional RSSB teachings proclaim, including the "scriptures" -- if that is taken to mean the books describing the teachings of the preceding gurus.
Those teachings say that the guru is greater than God, because the guru takes souls back to God, being God in Human Form. The radiant form of the guru (meaning, a supernatural form) guides the disciple through higher regions of reality all the way to Sach Khand, or "heaven."
So it seems to me that the current RSSB guru is trying to have it both ways.
He doesn't claim to be any sort of divine being, yet he refers people to the traditional RSSB teachings -- which DO say that the guru is divine. Even more, those teachings speak of the Perfect Living Master, Dhillon being the current occupant of that title.
I'd find Dhillon to be more believable if he simply said that the traditional teachings are wrong. Anyway, read on for the most recent interchange between Osho Robbins and the RSSB guru.


text:
Friday, May 14, 2010
Window Light
Assuming the sun is not shining directly through the window, the daylight that enters a room from outside is a soft source, meaning the light comes from a broad area and it doesn't cast hard-edged shadows. In this group portrait by Peder Krøyer (1851-1909), note how the shadow cast by the vase quickly dissolves into blurry edges.
When window or doorway light falls on a floor, there's often a lot of fall-off, or weakening of the light, as you travel back from the window, as with this interior scene by Anders Zorn (1860-1920). This is because the amount of window light available is usually in proportion to how large a slice of the blue sky you can see from a given point in the room.
Even though Zorn used a very limited palette, he loved to play with the relationship between the slightly cool window light and the relatively warm interior light from incandescent or flame-based lamps.
Thanks, Tim A. And thanks to BoingBoing for picking up the studio shot.
See a bunch more high-res images by Krøyer at Tim's blog.
15 comments:
- Steve said...
Great post, perhaps another excerpt from the forthcoming book?
You mention BoingBoing running the studio shot. David Apatoff had an excellent post yesterday about studios:
Fortunately, yours isn't shown "empty" for the same reason as those in his post... - May 14, 2010 at 5:39 AM
- James Gurney said...
Steve, thanks for that link to the interesting post by David Apatoff.
And yes, window light will be one part of a whole chapter that covers light sources:
Direct Sunlight
Overcast Light
Window Light
Candlelight and Firelight
Indoor Electric Light
Streetlights and Night Conditions
Hidden Light Sources
The pictures in this blog post are different from the ones in the book. The body of the book will have all new paintings by me, but I start off with large reproductions of:
Stanhope Forbes
Harry Anderson
and Walter Everett - May 14, 2010 at 7:08 AM
- Steve said...
Regardless of what images you use in the book, thanks for the introduction to Kroyer (I don't know how to type the o with a line through it). I love this triple portrait. Based on the link you gave to his Wiki biography, it seems the figure on the left is Kroyer and the woman is his wife. Wonderful sense of space and a moment frozen in time. Her thoughtful expression and the life in her hands are especially striking.
- May 14, 2010 at 7:22 AM
- अर्जुन said...
""Even though Zorn used a very limited palette""--One of the great myths of Modern Times!
from the article Sweden's Sargent, by Bob Bahr
Birgitta Sandström is the museum director of the Zorn Collections, which includes the artist's residence, estate, and museum in Mora, Sweden.
Sandström had difficulty even comprehending the assumption that Zorn worked with the specialized palette associated with him. She reports that 17 tubes of cobalt alone are represented among the 243 tubes of paint left by Zorn in his studio in Mora.
~It would be great if you or a reader could get an official list of all 243 colours. What a scoop!!!
øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøøø - May 14, 2010 at 8:29 AM
- James Gurney said...
अर्जुन: I'd be interested in more documentation about Zorn's working palette for portraits and interiors. Of course he owned blues and used them in his outdoor work, but both of the interior paintings in the post appear to be painted in a very limited gamut. The remaining contents of an artist's studio don't really tell us much about what he used in an individual painting.
- May 14, 2010 at 9:10 AM
- अर्जुन said...
I agree. The range of possibilities for any palette should be explored and understood. All paintings have a gamut once finished.
Zorn didn't wring all of his paintings from the same 4 tubes of paint. The dogma of a "Zorn Palette" limits and pre-burdens those that wish to study him, only to find they "just can't get it".
""The remaining contents of an artist's studio don't really tell us much about what he used in an individual painting."" ~It doesn't even tell you how many tubes were unwanted freebies from a paint maker looking for an endorsement. Regardless, seeing a list would be cool!
~Hej då! - May 14, 2010 at 9:49 AM
- My Pen Name said...
side note but i'd love to find a good catalog of Kroyer - doesn't seem to exist under 100.00
- May 14, 2010 at 3:28 PM
- My Pen Name said...
PS I think Kroyer and Zorn influence Sorolla and visa versa side note the hispanic society has rehung the sorolla murals after a 2 year tour of spain - its up on 155th - and worth the trip!
these murals are spectacular...talk about light! - May 14, 2010 at 3:39 PM
- Tyler J said...
Some beautiful pieces there. I really appreciate the little nugget about the amount of light in a given part of a room being in proportion to the amount of blue sky visible. One of those "light bulb" moments for me.
I am really looking forward to the book!
@Steve: you can make the Ø symbol by holding down the ALT keyand then typing 0216 on the number pad, or SHIFT+OPTION+O on a Mac. There are several keyboard shortcuts for special character sites, if you're interested. - May 14, 2010 at 10:48 PM
- James Gurney said...
Pen Name, yes, the Sorolla murals are fantastic. There's a nice article about them by Bob Bahr in the current American Artist magazine.
The only inexpensive book I've found with a lot of Kroyers is the exhibition catalog from "The Skagen Painters In a New Light," though none are currently available.
Tyler and Steve, thanks for that cool keyboard shortcut. The way I make an "ø" on a Mac is to click on that little flag on the right side of the topmost bar on your screen. If you click on "Show Character Palette" and then "Accented Latin," you can get any of the special characters. - May 15, 2010 at 3:53 AM
- bill said...
great stuff. itichin' for the book.
- May 15, 2010 at 9:44 AM
- Tim said...
Hey Guys, glad you used the pic James!
I took a bunch of photos and put them up on my blog, mostly high rez of Kroyer paintings, you can find them here,
http://timpaints.blogspot.com/2010/02/here-are-some-high-rez-phots-from-my.html - May 15, 2010 at 9:48 AM
- James Gurney said...
Thanks, Bill.
Tim, those Krøyer photos are incredible. I put the link on the end of the post. - May 15, 2010 at 10:04 AM
- Steve said...
Tyler and Jim,
Thanks for the character tutorial. Let's see if I learned anything...Peder KrØyer (using Tyler's method) and Peder KrØyer (using Jim's.) Sweet! - May 15, 2010 at 12:06 PM
- babahr said...
Mr. Gurney,
I don't have any further documentation regarding Zorn's palette other than my notes. The curator at his museum and a curator at the Stockholm national museum found the no-blues assertion so clearly false they wouldn't discuss it much at all, even though I asked the question in as many different ways as I could think of. I do have two pictures of his palettes that I took inside his studio in Mora, which is closed to the public. One clearly shows blue, and the other is scraped too clean to be definitive, one way or another.
I really feel the Zorn limited palette is more important as an idea than as historical fact. It doesn't make the concept any less important. But to associate Zorn with a blue-free palette is questionable.
Bob Bahr - March 21, 2011 at 12:01 PM


text:
Jose Susumo Azano Matsura, the foreign national at the center of a local campaign finance scandal, is a little-known figure in the U.S., but back home in Mexico, he has a reputation as a billionaire who reportedly moves in high government circles.
Mexican newspapers and periodicals have for years followed Azano's business dealings, his political connections, and his monumental fight with Sempra Energy over land for a liquified natural gas plant in Ensenada. El Sol de Tijuana newspaper calls him "almost a legend."
He is clearly regarded as a man with power.
For example, a column in the Mexican newspaper El Universal reported on a meeting between incoming Mexican President Enrique Pena Nieto and President Barack Obama in 2012 when they discussed threats to relations between the two nations. The number one threat identified by the U.S., according to the newspaper, was the Sempra Energy land dispute allegedly financed by Azano. Number two was the price of Mexican tomatoes, and number three, drug cartels, in that order.
inewsource reviewed the scant mentions of Azano in U.S. media and pored through dozens of Mexican newspapers and websites, as well as personal social media accounts of Azano family members for information about a man referred to only as a "wealthy businessman" in a federal complaint unsealed in San Diego this week.
Prosecutors contend this man funneled more than $500,000 into local political campaigns, using a "straw donor" to make the donations with the help of a Washington, D.C.-based campaign consultant and a former San Diego cop, who are both charged with crimes. Foreign nationals like Azano are not allowed to fund political campaigns at any level in the U.S.
Azano is not named in the complaint, but inewsource verified his role as the FBI-described "wealthy businessman" after matching up the donation amounts cited in the federal complaint with the San Diego City Clerk's campaign contributions and expenditures data and Secretary of State's business registry information.
Azano's limited-liability company, Airsam N492RM, LLC, donated $100,000 to a PAC named, "San Diegans for Bonnie Dumanis for Mayor 2012, Sponsored by Airsam N492RM, LLC." Ernesto Encinas, the retired police detective at the center of the probe, also donated $3,000 to that PAC. Those two donation amounts were highlighted in the federal complaint as examples of illegal campaign expenditures.
Azano is no stranger to controversy or political intrigue.
Mexico City newspaper Reforma on Thursday morning reported Azano's company was implicated in a money laundering and fraud investigation. The Mexican attorney general alleges that the company, Security Tracking Devices SA de CV, either through a payment or contract services, deposited 33 million pesos (almost $2.5 million dollars) into the account of a corporation linked to two men who were charged with fraud and money laundering.
Azano is of Japanese ancestry and grew up in the western Mexican state of Jalisco. He is the son of businessman Susumo Azano Matsura, head of Grupo Azano, a corporation that has done everything from construction to manufacturing license plates. One of Azano's websites says he earned degrees from University of Massachusetts Boston and University of Guadalajara.
He made his money in surveillance and security technology. One online news outlet in Mexico estimates the value of the family enterprises at $30 billion.
Azano reportedly has a residence in Coronado, but the large waterfront home on Green Turtle Road is owned by a Margarita Hester de Azano, according to the county assessor. Also according to the county assessor, Azano himself owns no property in San Diego County.
Azano keeps his own blog with articles about such things as personal online security and "appropriate cars for leaders." Alongside photos of high-end presidential cars, the article argues that unlike the cars of "common men," the cars of leaders must be able to protect them from danger.
The most recent article on his blog is from August 2013 and talks about open-source intelligence. It ends with the quote, "Information is knowledge. Knowledge is power. But we have to remember that each piece of information has the power to make or unmake someone."
Azano's son is Susumo Azano Jr., who goes by the name Mr. Susu. News accounts do not mention that he has a role in his father's company. El Universal displays information from Susu's now-deleted Instagram account that shows him with exotic cars and at Las Vegas nightclubs with famous rappers and a 15-litre bottle of champagne that he reportedly bought for $90,000.
In one of the few articles about Azano that inewsource could find in the U.S. media, U-T San Diego described him as "a prominent businessman from a wealthy family" in Mexico. He was propelled into the headlines when he sued Sempra over land the energy company was using for a liquified natural gas plant in Ensenada in 2011.
According to U-T San Diego, Azano had an agreement with the alleged owner of the land, Ramon Eugenio Sanchez Ritchie, sold to Sempra. The deal would give Azano 55 percent of any money and 66 percent of any land that came from litigation or agreements with Sempra Energy.
His disputes with Sempra also made the Mexican press.
In an opinion column, the newspaper El Sol de Tijuana reported Azano paid the son of the Ensenada mayor $2 million for "personal business" in January 2011. A few weeks later, the mayor ordered the Ensenada police to temporarily close down one of Sempra's plants because of several urban development code violations. The mayor was quoted denying there was a connection.
According to the Baja California-based Semanario Zeta, the closure brought the attention of the Mexican president.
In 1998, Azano started Security Tracking Devices, which today sells surveillance and security technology to Mexico's defense department, Sedena. A 2011 deal for $5 billion pesos (almost $374 million dollars) worth of equipment raised eyebrows in the U.S. and Mexico.
According to the Mexican newspaper Aristegui, the contract was awarded to Azano's company without competitive bidding. An editorial by the newspaper El Mexicano claimed Security Tracking Devices sold one of the systems for an almost 800 percent markup.
On this side of the border, the San Francisco-based Electronic Frontier Foundation warned about the technology being sold, which allowed the Mexican government to remotely access and activate phone microphones and download text messages, contacts and multimedia.
Security Tracking Devices has global reach and is part of the reason Azano is often referred to as a billionaire. However, Azano is not included on Forbe's list of the wealthiest Mexicans.


text:
mkstemp - make a unique filename
The mkstemp() function shall replace the contents of the string pointed to by template by a unique filename, and return a file descriptor for the file open for reading and writing. The function thus prevents any possible race condition between testing whether the file exists and opening it for use. The string in template should look like a filename with six trailing 'X' s; mkstemp() replaces each 'X' with a character from the portable filename character set. The characters are chosen such that the resulting name does not duplicate the name of an existing file at the time of a call to mkstemp().
Upon successful completion, mkstemp() shall return an open file descriptor. Otherwise, -1 shall be returned if no suitable file could be created.
No errors are defined.
Generating a Filename
The following example creates a file with a 10-character name beginning with the characters "file" and opens the file for reading and writing. The value returned as the value of fd is a file descriptor that identifies the file.
#include <stdlib.h> ... char template[] = "/tmp/fileXXXXXX"; int fd;
fd = mkstemp(template);
It is possible to run out of letters.
The mkstemp() function need not check to determine whether the filename part of template exceeds the maximum allowable filename length.
getpid(), open(), tmpfile() , tmpnam(), the Base Definitions volume of IEEE Std 1003.1-2001, <stdlib.h>
First released in Issue 4, Version 2.
Moved from X/OPEN UNIX extension to BASE.


text:
Advertisement |
Anthony Marcus "Tony" Shalhoub (Arabic:انطوني ماركوس "طوني" شلهوب; born October 9, 1953) is an American actor. His television work includes the role of Antonio Scarpacci on Wings and sleuth Adrian Monk on the TV series Monk. He has won three Emmy Awards and a Golden Globe for his work in Monk.
Shalhoub was born and raised in Green Bay, Wisconsin. His father, Joe Shalhoub, immigrated from Lebanon to the United States as an orphan at the age of 10. He married Shalhoub's mother, Helen, a second-generation Lebanese-American, and founded a family grocery chain, starting with a store in downtown Green Bay.
The second youngest of the couple's 10 children, Shalhoub was introduced to the theater by an older sister, who put his name forward as an extra in a high school production of The King and I. Despite finding himself standing on the wrong side of the curtain during the final dress rehearsal, he became addicted to the theater. Shalhoub graduated from Green Bay East High School, where his senior peers named him the best dressed and most likely to succeed. In his senior year he suffered a setback, breaking his leg in a fall off the stage into the pit during a rehearsal. Recovering quickly, he was able to perform in the school's final play of the year. He graduated with a bachelor's degree in drama from the University of Southern Maine in Portland, going on to earn a masters from the Yale School of Drama in 1980.


text:
Gentry's contract was set to expire at the end of this season and it looks like Robert Sarver and Lon Babby didn't want to wait that long. Of course, Babby's contract is up at the end of this season as well so we'll see what happens there. As for Alvin, perhaps he'd simply had enough losing and didn't see the need to stick around for the rest of the season. We'll see what they all have to say soon enough.
No word yet on who will slide over and finish of this mess of a campaign. It could be Elston Turner, who was hired under the Babby regime, or perhaps Thunder Dan Majerle will get his chance. I'm sure that will be answered soon enough and honestly, does it really matter?
Alvin will be fine. He's got plenty of friends in the media and won't take much blame for the Suns situation. He's been very effective over the years and maintaining the proper distance from personnel decisions. If he wants to coach again, I'm sure he can.
Meanwhile, the Suns under-performed their meager talent level this season and are a complete mess and when that happens, heads typically roll.
Jude LaCava was first with the news:
Alvin Gentry is out as head coach of the Suns
— Jude LaCava (@judefox10) January 18, 2013
John Gambadoro quickly followed on Twitter with more details.
Here's more on Gentry's career:
Alvin Gentry, Suns to part ways, according to report - SBNation.com
Gentry assumed head coaching duties in 2008-09 on an interim basis and led the team to an 18-13 mark over 31 games, and he eventually assumed full-time duties with the team. In his career, Gentry owns a 335-370 record as a head coach (.475 winning percentage). His best season with the Suns came during 2009-10, when the team went 54-28 and advanced to Western Conference Finals, where they lost in six games to the Los Angeles Lakers.


text:
Australian electronics vendor, Dick Smith, has announced that it will sell unlocked Apple iPhone 5 devices from today.
Unlocked iPhone 5 16GB smartphones are on sale for $788, $11 below Apple's asking price.
The 32GB and 64GB models are not part of the promotion.
The device will be sold through 50 Australian retail outlets across all eight states and territories.
Both black and white variants of the iPhone 5 will be available.
Follow Nermin Bajric on Twitter: @nermin_au


text:
Newswise — A survey of young women who use tanning beds found that despite being aware of the health risks associated with indoor tanning, they continue to take part in the activity, according to research conducted by University of North Carolina Lineberger Comprehensive Cancer Center.
The study, co-authored by UNC Lineberger members Seth M. Noar, PhD, of the UNC School of Journalism and Mass Communication, and Nancy Thomas, MD, of the UNC School of Medicine, aimed to understand what motivates young people to seek out tanning beds and how to develop messages to discourage their use among young people.
In executing their survey, the researchers surveyed a population they believed were likely to be tanning bed users – members of college sororities.
"We reached out to this population not only because we thought they might be tanning bed users, but also because young people are at the greatest risk of developing skin cancer as a result of tanning indoors," said Noar. More than 28 million people use tanning beds each year, and the population most at risk from developing skin cancer as a result are users younger than 35.
Results from the survey, published in JAMA Dermatology, found that 45 percent of the young women surveyed had used tanning beds, with 30 percent using one in the last year. The study also revealed that the majority of users started tanning indoors in their teens, indicating that health campaigns addressing the practice should target high school audiences.
While the majority cited an improvement in appearance as a major reason for visiting a tanning parlor, the biggest factors cited by those taking the survey were the convenience of it and the way the practice makes them feel.
"We found that appearance is important, but we found that other factors to be equally or even more important. For instance, many of these young women reported really enjoying the experience of tanning indoors. They reported that it reduces stress and is relaxing to them. In the study, we called this factor 'mood enhancement'" said Noar.
One of the more striking findings from the study – most who use tanning beds were aware of the health risks but did so anyway. Dr. Noar said this suggests that message designers will have to be very strategic in creating messages to impact this behavior. For example, messages could suggest alternatives – such as self-tanning products that do not rely on UV rays – instead of solely emphasizing the health risks. Dr. Noar noted, "Use of sunless tanning products instead of tanning beds could potentially address two key factors that came out of our study – appearance motivations to look tan and the convenience factor of getting a quick and easy tan."
Since the introduction of tanning beds in the late 1970s, indoor tanning has grown to a $2.6 billion a year industry. The number of tanning parlors in most U.S. cities is greater than the number of Starbucks or McDonalds.
In the past decade, medical research has discovered direct links between tanning bed use and higher rates of the skin cancers basal cell carcinoma, squamous cell carcinoma and melanoma, according to Dr. Thomas. One study found that using indoor tanning before the age of 35 increases the risk of developing melanoma by 75 percent. In 2009, the International Agency for Research on Cancer responded to the research by classifying tanning beds as a Group 1 carcinogen, placing it in the same category as cancer-causing agents such as cigarette smoke, X-rays and asbestos.
"Tanning is an artificial form of light that leads to carcinogenesis. It causes mutations, DNA alterations. So, there could be breaks in the DNA. It can also cause increased cell proliferation," said Dr. Thomas.
More than 3.5 million people are diagnosed worldwide with skin cancer each year. While the cancer can be treated when detected early, the prognosis worsens considerably when it has spread to other parts of the body. In the U.S., more than 9,400 people died of skin cancer in 2012.
The growing awareness of the dangers has led to major efforts to curtail tanning bed use, especially among teens. Five states ban the use of tanning beds for minors under 18, and 33 states and the District of Columbia have passed regulations limiting minors' access to indoor tanning. In North Carolina, a tanning bed bill targeting minors was introduced in 2012 but did not reach a final vote.
As a next step, the UNC researchers plan to work with UNC graduate students to help develop messages about the dangers of tanning targeting young audiences. Funding for the study was provided by the University Cancer Research Fund and UNC Lineberger.