text:
Drogba told me to come here
EMERSE FAE has revealed how he took advice from close friend Didier Drogba about joining Reading, writes NICK IVE.
Royals last week ended their year-long chase for the Ivory Coast international when they snapped him up from French side Nantes for a club record £2.5million.
Midfield star Fae has many compatriots in the Premiership – among them Chelsea's Drogba, Arsenal duo Kolo Toure and Emmanuel Eboue and Bolton's Abdoulaye Meite.
The 23-year-old said: "I know Reading were interested in me last summer, but my club didn't want to sell me so I waited and they called me back and I decided to come.
"I spoke with many, many people about coming to England. I feel the English Premier League is a good division for me.
"I know a few of the players, like the ones I play in the national team with – Didier Drogba and Meite from Bolton and Kolo Toure from Arsenal.
"They told me that Reading was a good team with good young players like me. The team want to win games like me."
Fae, who has recovered from a calf injury, will be hoping to face Drogba a week on Wednesday when Chelsea visit Madejski Stadium.
"I like to play against him because he is like a big brother to me," admitted Fae, whose last competitive match was back in March. "He is a very good player. I played against him when he was at Marseille and it was 1-1 – he scored.
"I have known him four years, but I won't kick him when we meet because he is big and I respect him."
Royals' boss Steve Coppell has only seen Fae in action on video, but the club's scouting network have been monitoring him ever since the African Cup of Nations nearly two years ago.
"We have been aware of him (Fae) but haven't pursued him," insisted Coppell. "This just gives us insurance in centre midfield. He is not a like-for-like for Sidwell and neither is Cisse. Is he a holder, is he an attacker? He can be whatever we want him to be.
"You would have to say it is hard to find the right player in this country with the emphasis on the right price. The French system of developing players has been probably the most successful, carrying on from the Dutch Ajax system.
"Consistently French players are technically superb. We have our own little market in terms of finances. There a lot of Premiership English players, quite frankly we can't afford. The fee or the wages. Whereas in France we have a larger pool from which to select from."
Reading FCVeljko Paunovic and Reading FC given double boost ahead of Huddersfield Town and QPR fixturesReading are set to welcome back defensive duo Baba Rahman and Andy Yiadom in the near future after Ghana exited the Africa Cup of Nations at the group stage after defeat to Comoros
Andy CarrollReading FC striker George Puscas has struggled this season in front of goal and the Romanian has been linked with a move away from the Royals during the January transfer window
Veljko Paunovic gives hint over Andy Carroll's Reading FC future amid Burnley transfer links
Reading FCAndy Carroll's short-term contract at Reading FC expired after the Royals' 2-1 defeat against Middlesbrough in the Championship, a game in which he scored
Veljko Paunovic and Reading FC given timely boost ahead of Luton Town amid Liam Moore decision
Reading FCReading FC could welcome back experienced defender Michael Morrison in the near future after he featured for the Royals' under-23s side against Newcastle United on Friday
Reading FCSky Sports pundit David Prutton delivers prediction for Reading FC's huge game with Luton TownEFL expert and former Nottingham Forest, Coventry City and Southampton midfielder David Prutton has his say on Reading FC's rearranged game with Luton Town on Wednesday night
Lucas Joao and the key factors that can help Reading FC against Luton Town and Huddersfield Town
Reading FCLucas Joao made his first appearance for Reading since August as he came off the bench for the Royals against Middlesbrough on Saturday, following a lengthy spell out injured
The Queen's royal residence she's never lived in which Kate and William could call home
The QueenPrince William and Kate Middleton could home one of the Queen's royal residences that she's never even lived in


text:
Tinder to make ID verification available to all users
Tinder has announced that an ID verification feature, which lets app users verify their identity on the app, will soon be available to all…
Sam Spiller, Staff Writer Programs & Apps • 17 Aug 2021
Tinder introduces new Vibes quiz feature
Tinder is introducing a new in-app event called Vibes — miniature quizzes that can help you match more easily with others. The dating app…
Sam Spiller, Staff Writer Programs & Apps • 5 May 2021
Tinder video chat feature rolls out globally
A new video chat feature has arrived on the dating app Tinder which narrows the gap between texting and in-person dating. After its limited…
Ashleigh Klein Social • 28 Oct 2020
Bumble sues Tinder's owner Match for $400m over trade secrets, 'false statements'
A few days ago, we wrote a piece about Tinder's parent company Match suing its dating app rival Bumble for patent infringement. While that…
Andy Walker, former editor Social • 29 Mar 2018
Tinder's future feature will let women decide who makes the first move
Tinder has gone through a number of changes in its six-years as the dating app your parents know you use. And according to the…
Andy Walker, former editor Social • 15 Feb 2018

redpajama_set_name: RedPajamaCommonCrawl


Share Expy Multimedia: How To Choose The Land For Purchase?
How To Choose The Land For Purchase?
Want to buy the land and don't know how to start? There are several options!
The first way - the pay the realtor. In this case, he can offer a "point" views (a few pre-selected options, corresponding to your requirements) and "exploratory" views. In this case, the tour takes place on all objects from realtor's list, except obviously unsuitable (by the price, the location, the type of area and so on). Each of these two types of views have their pros and cons. In the case of a "point" it is easy to miss an object, described simply "not attracted" to the buyer, and in fact that is what you are looking for. The advantage of this option is time saving. At the "exploratory" views you have significant temporary losses, and plus - your own, a comprehensive overview of all existing offers on the market.
Or, you can visit Jiji and in few hours look the almost all propositions in desirable region!
Sellers are interested to provide all the information about their land - just in the case, that if buyer will come to see the land, he can refuse of purchase! Buying land will take less time - you can see all the ads and chose few you are really interested in!
Now, about what to look for when viewing.
According to experts, when choosing a land in the first place, buyer should be guided by direction and distance. Direction must be unloaded, have a good transport accessibility, quality roads and a good environment. As for cleanliness, it is possible to learn about it from the so-called ecology maps, which indicate most unfortunate places to live (former and existing landfills, animal burial, cemetery, etc.).
Then begins the second phase - to view of specific features.
And it is important to pay attention not only on the place itself, but also on what surrounds it. And you also to keep in mind the realities of our laws ... So, for example, is certainly nice when on the land grow trees. But we must remember that you are not able to purchase the forest to property. Restrictions also have areas, adjacent to bodies of water: according to the legislation, land can not be closer than 150 meters from the water. Compliance with these rules is strictly controlled by the authorities, so this acquisition may result in at least a headache, and at worst, loss of money.
First and foremost, of course, on the status of the plot: if all documents are in order, what is the purpose of land, whether it is possible to formalize ownership. It is also important physical characteristics of the soil on the site: you are unlikely appreciate the soil, which will not grow even lawn grass.
Another aspect - the availability of communications. It is important to know whether the electricity and water are suppliedto the land, or you have to do it by yourself. If not, how far are these communications from your land? So, with regard to water, its supply to the house can be from a collective (city, village plumbing, cooperative artesian wells), or individual source (well).
As for the region in general, you should be interested in the possibility of a centralized garbage collection and delivery of mail as well as municipal service of roads and the availability of hospitals, shops, post office, beaches etc.
Concluding assessment of the selected land, ask the current situation and future plans of urban development of the area where it is located. Is your future property in a security zone, near the high-voltage transmission lines or railroad tracks? Better to find out everything at once than face a refusal of house building or farming.
In short, choosing a land, do not neglect the little things, because it is from them will depend the quality of your life.


text:
Sarah Evans Is a Digital Strategy Superwoman
Stylish glasses, an Apple watch, and iPhone at hand, Sarah Evans is the modern day PR Girl.
With an industry that is constantly evolving, this female disrupter always finds a way to stay two steps ahead of it.
Her founding business
Sevans Strategy — digital strategy and consulting
Home Base?
Can you tell us a story about what brought you to this specific career path?
At a very young age I was planning tea parties and putting together events for family members and I realized what I loved the most about doing this was two things:
the thrill of inviting people; and
bringing people together around a shared interest.
At its core, that's what I feel like I do.
Whether it's in front of the camera as a digital correspondent or behind-the-scenes as a consultant, I invite and bring together. Building my own company has been a constant evolution! I've pivoted a few times and, perhaps, just now have found my "Hedgehog Concept," (i.e. the thing I'm the very best at). One thing is for sure — I am ALWAYS learning. I'm in awe of the brilliant makers and creators in today's digital landscape. So much has changed since I first came into the field 12+ years ago.
When did the Entrepreneur light bulb go off?
When I was 5 or 6 trying to sell baseball cards on the corner. I didn't want a typical 9 to 5, I wanted that 24/7 life that I had the illusion of control over.
What advice would you give other women wanting to start a biz?
It's scary. I know. My choice while starting my business was to stay in my "safe" job and moonlight after hours until I built enough clients to leave the "other." Whatever it is, once you take the leap, in six months you'll look back and wonder why you were worried (advice from my father-in-law).
How do you bring goodness to the world?
Philanthropy and raising my children. I love to give back, whether it's through providing business tools to women to volunteering with local organizations, I can't be good unless I give good.
None of us are able to achieve success without some adversity along the way. Is there a particular person who you are grateful towards who helped get you to where you are? Can you share a story about that?
There are so many. I am lucky. As cliche as it may sound, my biggest champions are my mother and father. When I tell them some crazy idea, they seem like it's the most normal thing in the world and just assume I'll be successful. I'm lucky to have both unconditional love and a belief in my abilities.
Five Leadership Lessons
Don't underestimate your value, regardless of age — This one has come full circle, as I experienced insecurity directly out of college and then again as a new mom coming back from maternity leave. The landscape changes so fast, but it doesn't take away from your natural talents and abilities.
Listen, laugh and learn — Funny enough this is the mantra I recite to my children before school each day, and somehow it's crept it's way into my professional life. If I'm not doing all three things, then I'm not doing my best work.
Find what you're the best at and focus your energy there — I have lots of interests and hobbies, but it doesn't mean I'm great at them. Like Liam Neeson, I have a very specific set of skills and I stay in my lane.
There's more than enough business — If I've learned one thing, it's that there's enough business. It's why I've never shied away from sharing tips and tools. I expect the same in return.
Build a network when you don't need anything — There's nothing like a REAL relationship built on giving and sharing. Growing your professional network takes time, but social media can expedite that process. Save your ask for a time when it's worthwhile and the relationships you've built will be there.
Life Lesson Quote?
"When we treat man as he is we make him worse than he is. When we treat him as if he already was what he potentially could be We make him what he should be." ― Goethe. This is personal and professional. Everyone has potential and when you treat others as if they've already achieved their greatest potential, they will get there.
Is there a person in the world, or in the US whom you would love to have a private breakfast or lunch with, and why?
Great one! I'd love to sit down with Michelle Obama for breakfast.
What are some of your fave milestones?
Some of my favorite professional milestones include: launching Twitter's very first industry chat, #journchat and bringing it into traditional news outlets CNN and NBC News. Working with amazing companies, like PayPal, Wal Mart and more and living a professional life that has allowed me to continue to learn and grow.
Tell us about what's on your current launch list? What's up your sleeve?
I just launched a Social Influence Insider list that is already off and running. I'd LOVE for you to be on it.
It's literally a list that gives:
? New products and tools
? Industry alerts
? Deals and discounts
? Reports, surveys
? Access to fun stuff!
SIGN UP HERE: https://t.co/sG1LAgGzk0
I've recently started taking on more local clients in Las Vegas which has been exciting….even though I work with companies all over the world. There's actually an awesome social content tool launch coming next week that I can't talk about, but will tweet about when it's live. You heard it here first.
Secret Talent?
I was a musical theater performer in my past.
Zodiac Sign?
Currently Reading?
Diary of a Wimpy Kid series with my seven-year-old.
Where Will Social Media be in Five Years?
Still social, still media. I'm not a futurist, so I don't want to taint the real people making the magic.
Favorite Drink Order?
Favorite Instagram Account?
heatherkmcmahan
Must-Have Technology?
Favorite Way to Decompress?
Cardio kickboxing in a hot room
Twitter Handle?
PRsarahevans
Women You Admire?
All of you.
LinkedIn Profile?
Sarah Evans — Founder and CEO — Sevans Strategy | LinkedIn
View Sarah Evans' profile on LinkedIn, the world's largest professional community. Sarah has 14 jobs listed on their…www.linkedin.com
As the saying goes, there's never really a regular day when you work in PR. Changemakers like Sarah keep you in the loop on all things social and PR (I mean, have you seen her colorful, emoji-filled Twitter feed?).
She's also ready to hit the road to speak at your next conference to cover social tips and tools for 2019, working with influencers, content creation and management, and the state of social and PR.
Sarah's words of wisdom:
Take the risk
Make the change
Do the thing
This post by Lisa Buyer originally published on Medium's Authority Magazine, a publication by Yitzi Weiner.
Women-Owned Firm Wins First Metaverse Agency of Record
Dive into Paige Dansinger's VR World!
Deborah Brooks: The Small Business Owner Who Could


Managing apps connected to your clients' QuickBooks®Online companies just got easier! Last month, Intuit® updated the Apps® tab in QuickBooks Online Accountant (QBOA) to give accountants better visibility and control of the apps connected to their clients' accounts. This new functionality includes a streamlined, high-level view of all apps connected to a client's account, combined with easier navigation to view and manage detailed information about the app connection.
I love this new view because it gives me quick access to monitor and manage all the apps connected to my clients' QuickBooks companies on one screen. Let's take a peek!
The new Client apps page in QBOA now lists your clients' apps in a convenient grid view. This new layout allows you to see all apps for all your clients in one screen. The grid lists the client name on the left and displays all apps connected to their QuickBooks account on the right.
The number of apps already connected to the QuickBooks account is displayed next to each client's name, and you can easily see whether the app was connected by you or by another user by looking directly underneath the app card in the grid.
The filter function helps you to easily to view only clients that are subscribed to either discounted apps, apps you connected or apps others connected. This can be super helpful when auditing your clients' app subscriptions to see which apps were connected by the firm and which were connected directly by the client. This is also a great way to quickly determine if you have clients using apps that are part of the new QuickBooks Accountant Apps program, which offers discounts to accountant users on some of the most commonly used apps in the Apps Center, introduces consolidated billing for all program apps andallows you to add the subscription fees to your existing wholesale billing account right inside QBOA. We'll learn more about the apps program later in this article!
Use the search box to identify which clients are using a specific app. Just start typing the name of the app you are looking for to see a list of all clients who have the app connected, displayed below.
The redesigned apps tab also provides better visibility into client details and app management for accountant users. Type a client's name into the search box and you can view the details for that client only. This new functionality makes it easier than ever to see what apps are connected to a new client's QuickBooks during the onboarding process, an essential step in understanding your client's processes and technology workflows.
You can manage apps that were connected by you by clicking on the three vertical dots to the left of the app card. You can launch the app, view support options, disconnect the app from QuickBooks or rate your experience with the app by writing a review to be included on apps.com. If an app was added as part of the Accountants App program, you'll also be able to view and manage subscription information here.
If the app was added by another user, you can still view support information for the app, including contact info and a link to the developer's support website.
I'm really excited about this new layout and how easy it is to view and manage client apps and would love to see additional features added here in the future, such as the ability to view when an app last connected to QuickBooks and maybe a link to a filtered view of the audit log, showing all data recorded and modified by the app!
Another big change to the way accountants manage apps for clients is the launch of the QuickBooks Accountant Apps program. The program was launched in late May 2018 and offers accountant users the option to buy subscriptions at a discount of up to 25 percent, when adding program apps to their clients' companies through QBOA. Apps included in the apps program currently include: Expensify, Method:CRM, TSheets by QuickBooks, ServiceM8, Float, Circulus, Excel Transactions Importer and Deleter, SOS Inventory and Qvinci, but more of our favorite apps partners will be joining the program in the future.
To add an app to your wholesale billing account, follow these easy steps!
1. From within the Apps tab, click on the app you'd like to add.
2. Click Get app now.
3. Under Install for Your Client, select your client from the drop-down list. Notice that the wholesale pricing will be displayed. Click on Buy now with accountant discount (firm is billed), then click Installat the bottom right of the window.
4. Enter your billing information, click next and the order confirmation screen will appear. The new account is added to your wholesale billing once you agree to the terms and conditions and click Place Order.
5. When the order is complete, you will see an Order Receipt screen to confirm the transaction.
6. Click Done and you're ready to activate and connect the app to your client's QuickBooks company!
You can view all your apps subscriptions by clicking on Your Account in the Gear in QBOA. Manage app subscriptions is found at the bottom of the Your Account screen. You can view your monthly invoices, edit your billing info and manage all subscriptions for you clients' apps.
As more accounting professionals continue to leverage technology and automation to complete their work, it makes sense for them to bundle the costs of this technology into the services they provide to their clients. The new Accountant Apps program is certain to make it easier to keep track of these costs through consolidated billing with their QuickBooks subscriptions and other Intuit add-on services.
It's important to note that only the master administrator of the QBOA firm will have access to the Client apps screen and can add apps to the firm's wholesale billing account. To learn more about apps permissions in QBOA and specifics about the App program billing, check out this support article.
If you'd like to see the new Apps tab in action, check out The QB 'Appy Hour with Liz and Heather on July 10 from 4:00 – 5:00 p.m., EST. We'll be getting 'appy' showing you the new functionality and celebrating the magical world of the QuickBooks Online app ecosystem.


text:
Top Stories on StartUps (April 10)
Delivered April 10th, 2020. Contributors: Tamera G. and
A Twitter search performed on April 10, 2020, sought to identify top stories discussing startups and entrepreneurs. The search revealed some interesting content. Below are a few highlights, though the complete findings can be found in the attached spreadsheet:
Unsurprisingly, several articles were a direct response to, or was inspired by the current COVID-19 pandemic. One tweet shared an article that discussed Bill Gate's take on the current crisis and how governments should prepare for similar situations in the future as another pandemic is inevitable.
Articles relating to startups gave particular insight around what it takes to be successful, even during a downturn. One of the articles said that some of the most durable companies are born out of a downturn.
Articles around entrepreneurship mostly dealt with how to cope with the COVID-19 pandemic. We-FI, which stands for Women Entreprenuers Finance Initiative interviewed several female entrepreneurs for their experiences during a challenging time.
Many articles on startups discussed innovative technologies that are helping with the pandemic. A company called DarwinAI changed gears to develop COVID-Net, a new technology that could identify individuals infected with the novel coronavirus.
The search also revealed information relating to the business response around funding available through the CARES act. One example is an article that suggested small businesses should think twice before applying for aid, since the program has limited funds. Their application if approved, can hinder other companies from receiving aid who need it most.
These articles have been selected by utilizing hashtag and non-hashtag searches with Twitter and Twitter's proprietary algorithms for rankings of top articles discussing startups or entrepreneurs. Engagement metrics have been provided for the original post of the article (as ranked by Twitter) and do not take into consideration any additional metrics of subsequently shared posts of the article.
CDRInfo.com on Twitter
RyanRejoice on Twitter
WBG_Finance on Twitter
Entrepreneur on Twitter
ePlace Solutions on Twitter
Startups in the News


text:
Wilhelm Falta (* 6. Mai 1875 in Karlsbad; † 15. Juli 1950 in Obermarkersdorf)  war ein österreichischer Mediziner (Internist).

Leben
Falta studierte Medizin in Prag und Straßburg und promovierte 1900 an der Karls-Universität in Prag, wo er bei Karl Hugo Huppert am Lehrstuhl für Physiologie und medizinische Chemie war. Danach war er zur klinischen Ausbildung an der Medizinischen Klinik am Bürgerspital Basel bei Friedrich von Müller und Wilhelm His, wo er sich 1904 in Innerer Medizin habilitierte und Privatdozent wurde. Anschließend war er an der Ersten Medizinischen Universitätsklinik Wien bei Carl von Noorden und Karel Frederik Wenckebach. 1914 wurde er außerordentlicher Titularprofessor und 1917 außerordentlicher Professor. Er war 1917 bis 1944 Primararzt an der Ersten Medizinischen Abteilung im Kaiserin Elisabeth Spital. Zum 1. Mai 1938 trat Falta der NSDAP bei (Mitgliedsnummer 6.331.006). Sein gut ausgebautes dortiges Labor wurde bei einem Bombenangriff am 21. Februar 1945 zerstört und er wich in das Krankenhaus Am Steinhof aus, wo er noch bis 1947 aktiv war. Er war Hofrat.

Sein Hauptarbeitsgebiet war Diabetes mellitus. Er verfasste den Abschnitt Erkrankungen der Drüse mit innerer Sekretion im Handbuch der inneren Medizin in der ersten und zweiten Auflage (Band 4).

Er war Mitherausgeber des Wiener Archivs für Innere Medizin.

Schriften
 Die Erkrankungen der Blutdrüsen, Springer 1913
 Die Zuckerkrankheit und das Insulin, 1924

Literatur

Weblinks

Einzelnachweise

Internist
Hochschullehrer (Universität Wien)
Absolvent der Karls-Universität
Mitglied des Deutschen Klubs (Verein)
Person (Cisleithanien)
Österreicher
NSDAP-Mitglied
Geboren 1875
Gestorben 1950
Mann
Mediziner (20. Jahrhundert)

redpajama_set_name: RedPajamaWikipedia


text:
Q: Delay execution of a function until completion of another using jQuery when method I am trying to delay the execution of a jQuery function from the jstree plugin until another function (which replaces the target html id) is completed using jQuery when method. However, the following script doesn't seem to do it right.
The idea is that to let the loadxml() function finishes populating the HTML tree then execute the jstree() function to apply the treeview.
Here is the HTML

the script
          $.when(loadxml()).then(function(){

                 $('#jstree').jstree();

           });

function loadxml(){

$.ajax({

    url: "xml/categories.xml",
    dataType: "xml",
    success: function(catxml){
        var categories = new Array();
        var outputDisplay = "";

        $(catxml).find("Categories").each( function(){
            var cid = $(this).find("CategoryID").text();
            var cname = $(this).find("CategoryName").text();
            var cdescription = $(this).find("Description").text();

            categories.push([cid,cname,cdescription]);
        });

        $.ajax({
            url: "xml/products.xml",
            dataType: "xml",
            success: function(prodxml){

                var products = new Array();

                $(prodxml).find("Products").each(function(){
                    var pid = $(this).find("ProductID").text();
                    var pname = $(this).find("ProductName").text();
                    var pcatid = $(this).find("CategoryID").text();
                    var pquantity = $(this).find("QuantityPerUnit").text();
                    var pprice = $(this).find("UnitPrice").text();

                    products.push([pid,pname,pcatid,pquantity,pprice]);
                });

                outputDisplay += "

Product List
"

                for(i=0; i<categories.length; i++){

                    outputDisplay += "
" + categories[i][1] + "
";

                    for(x=0; x<products.length; x++){

                        if(categories[i][0] == products[x][2]){

                            outputDisplay += "
" + products[x][1] + "
";

                        }

                    }

                    outputDisplay +="

";

                }

                document.getElementById("jstree").innerHTML = outputDisplay;

            }
       });

    }
});

}

A: Promises:
loadxml().then(function() {
    $('#jstree').jstree();
});

function loadxml(){

  return $.ajax({/* parameters */})
          .then(function(catxml) {
             //code that runs on the result of the first ajax request

             //return the promise from the next ajax request
             return $.ajax({/* parameters */})
           })
           .then(function(prodxml) {
               //code that runs on the result of the second ajax request
           });
}

A: deffered
        $.when(loadxml()).then(function(){

             $('#jstree').jstree();

       });

function loadxml(){
var deferred = $.Deferred();
  $.ajax({
     success : function(){
        //code
        $.ajax({

          success: function(){
             //your code
             deferred.resolve();

          }
        })
     }
  })

   return deferred.promise();

}

});

redpajama_set_name: RedPajamaStackExchange


text:
Tag: jerome baudry
UT Researchers Use Computers for Drug Research
View all the posts from June 24, 2014 Science & Health
UT researchers are using supercomputing to simulate the interactions of drug compounds and proteins in the body. The computers allow them to rapidly collect and analyze data which could make medicine cheaper, find new uses for existing drugs, and enhance the understanding of a drug's potential side effects.
Graduate Student Receives ACS Award for Drug Discovery Research
View all the posts from May 10, 2013 Campus News
Sally Ellingson, a doctoral student in the Genome Science and Technology graduate program, has won the American Chemical Society's very prestigious ACS Chemical Computing Group Research Excellence Award.
Professors Combine High-Tech Experiments with Supercomputing for Better Drug Design
View all the posts from November 2, 2012 Campus News
A team of three professors has combined high-tech experiments with supercomputing to probe the function of critical enzymes called cytochrome P450s. Understanding the various internal motions these enzymes undergo to bind different drugs will aid in the design of medicines.
UT Faculty Research Why Drugs Work on Some and Not Others
View all the posts from December 13, 2011 Campus News
Two UT biochemistry, cellular, and molecular biology faculty members may have uncovered why some people respond to drugs differently. Jerome Baudry and Yinglong Miao, joint faculty at Oak Ridge National Laboratory, used supercomputer simulations at ORNL to give them unprecedented access to a key class of proteins involved in drug detoxification.
Supercomputing Research Opens Doors for Drug Discovery
View all the posts from December 9, 2010 Campus News
A quicker and cheaper technique to scan molecular databases developed by UT researchers at the Department of Energy's Oak Ridge National Laboratory (ORNL) could put scientists on the fast track to developing new drug treatments. A team led by Jerome Baudry of the UT-ORNL Center for Molecular Biophysics adapted a widely used existing software to


text:
Q: Dataflow cannot determine project from environment I'm running a pretty standard Google Dataflow job and the following error keeps occurring:
EnvironmentError: Project was not passed and could not be determined from the environment.
Has this got anything to do with the way I have setup the project?
Full stacktrace:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/dataflow_worker/batchworker.py", line 609, in do_work
    work_executor.execute()
  File "/usr/local/lib/python2.7/dist-packages/dataflow_worker/executor.py", line 167, in execute
    op.start()
  File "dataflow_worker/shuffle_operations.py", line 49, in dataflow_worker.shuffle_operations.GroupedShuffleReadOperation.start
    def start(self):
  File "dataflow_worker/shuffle_operations.py", line 50, in dataflow_worker.shuffle_operations.GroupedShuffleReadOperation.start
    with self.scoped_start_state:
  File "dataflow_worker/shuffle_operations.py", line 65, in dataflow_worker.shuffle_operations.GroupedShuffleReadOperation.start
    with self.shuffle_source.reader() as reader:
  File "dataflow_worker/shuffle_operations.py", line 69, in dataflow_worker.shuffle_operations.GroupedShuffleReadOperation.start
    self.output(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 159, in apache_beam.runners.worker.operations.Operation.output
    cython.cast(Receiver, self.receivers[output_index]).receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 85, in apache_beam.runners.worker.operations.ConsumerSet.receive
    cython.cast(Operation, consumer).process(windowed_value)
  File "dataflow_worker/shuffle_operations.py", line 233, in dataflow_worker.shuffle_operations.BatchGroupAlsoByWindowsOperation.process
    self.output(wvalue.with_value((k, wvalue.value)))
  File "apache_beam/runners/worker/operations.py", line 159, in apache_beam.runners.worker.operations.Operation.output
    cython.cast(Receiver, self.receivers[output_index]).receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 85, in apache_beam.runners.worker.operations.ConsumerSet.receive
    cython.cast(Operation, consumer).process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 392, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 393, in apache_beam.runners.worker.operations.DoOperation.process
    self.dofn_receiver.receive(o)
  File "apache_beam/runners/common.py", line 488, in apache_beam.runners.common.DoFnRunner.receive
    self.process(windowed_value)
  File "apache_beam/runners/common.py", line 496, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn)
  File "apache_beam/runners/common.py", line 521, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise
  File "apache_beam/runners/common.py", line 494, in apache_beam.runners.common.DoFnRunner.process
    self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 283, in apache_beam.runners.common.SimpleInvoker.invoke_process
    output_processor.process_outputs(
  File "apache_beam/runners/common.py", line 592, in apache_beam.runners.common._OutputProcessor.process_outputs
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 85, in apache_beam.runners.worker.operations.ConsumerSet.receive
    cython.cast(Operation, consumer).process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 392, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 393, in apache_beam.runners.worker.operations.DoOperation.process
    self.dofn_receiver.receive(o)
  File "apache_beam/runners/common.py", line 488, in apache_beam.runners.common.DoFnRunner.receive
    self.process(windowed_value)
  File "apache_beam/runners/common.py", line 496, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn)
  File "apache_beam/runners/common.py", line 537, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    six.raise_from(new_exn, original_traceback)
  File "/usr/local/lib/python2.7/dist-packages/six.py", line 718, in raise_from
    raise value
EnvironmentError: Project was not passed and could not be determined from the environment. [while running 'Save Instances']


Welcome to the website of the Federation of the European Sections of the Combustion Institute.
The Federation of the European Sections of the Combustion Institute was founded in 2001. It is presently chaired by Terese Løvås (Norwegian University of Science and Technology, Trondheim, Norway).
Its major aim is to provide a forum for knowledge transfer in the field of combustion and related scientific and technological disciplines among academic researchers, graduate students and combustion professionals and thus, to ultimately, promote combustion research in Europe. This is accomplished mainly through the organization of european combustion meetings held on a regular basis (ECM).
The Combustion Institute, founded in 1954, is an international non-profit, scientific and engineering society whose sole purpose is to promote research in the field of combustion science. This is done through the dissemination of research findings at regional and national meetings, the biennial international symposia, through the publication of the symposium proceedings and the Institute's journal, Combustion and Flame. The Institute serves as the parent organization to national sections organized in many countries, numbering 29 as of 2004.


Not to be mistaken for Hollywood and Vine, Ocean and Vine is a great dining spot at the Loews Hotel in Santa Monica to meet for lunch or dinner. You enter through the back of the jaw dropping (it was a big "Wow!" to me) Loews Hotel lobby and that is just the beginning. The restaurant has a beautiful view of the Pacific Ocean, the busy Santa Monica Beach and the Santa Monica Pier.
At 1pm on a weekday it was easy to get a table on the patio so I could relax and chat and enjoy the fresh ocean air and watch people walking along the beach and the pier. My grilled shrimp salad was terrific with a very tasty and interesting blend of spices. Ocean and Vine's coastal cuisine comes fresh from the local Farmer's Market, the fish is caught locally and the beef is naturally farmed. It was all refreshing as was the lemonade and tea (Arnold Palmer) combination virgin drink I had. Yum! Yum! Plus the service was impeccable and very friendly.
And for an upscale hotel such as this the atmosphere was very relaxed and the prices were super reasonable and surprising, plus only $6.00 for valet parking. So you can take some time to experience that lobby and all it has to offer fully.


text:
/*
 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public License along with this library; if not, see <http://www.gnu.org/licenses/> or write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */

#include "LibVT_Internal.h"
#include "LibVT.h"

extern vtConfig c;

#if IMAGE_DECOMPRESSION_LIBRARY == DecompressionMac

void * _vtuDecompressMac(CGImageSourceRef imageSourceRef, uint32_t *pic_size, const char *imagePath)
{
	CGImageRef imageRef = CGImageSourceCreateImageAtIndex(imageSourceRef, 0, NULL);

	size_t width = CGImageGetWidth(imageRef);
	size_t height = CGImageGetHeight(imageRef);
	CGRect rect = {{0, 0}, {width, height}};

	void *image_data = calloc(width * 4, height);

	CGContextRef bitmapContext = CGBitmapContextCreate(image_data, width, height, 8, width * 4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host );
	CGContextTranslateCTM (bitmapContext, 0, height);
	CGContextScaleCTM (bitmapContext, 1.0, -1.0);

	CGContextDrawImage(bitmapContext, rect, imageRef);

#ifndef RENDER_INFO_TO_PAGES
	CGContextSetLineWidth(bitmapContext, (*pic_size - c.pageBorder)/50.0);
	CGContextBeginPath(bitmapContext);
	CGContextMoveToPoint(bitmapContext, 0, 0);
	CGContextAddLineToPoint(bitmapContext, (*pic_size - c.pageBorder), 0);
	CGContextAddLineToPoint(bitmapContext, (*pic_size - c.pageBorder), (*pic_size - c.pageBorder));
	CGContextAddLineToPoint(bitmapContext, 0, (*pic_size - c.pageBorder));
	CGContextAddLineToPoint(bitmapContext, 0, 0);
	CGContextStrokePath(bitmapContext);
	if(imagePath)
	{
		CGContextSelectFont(bitmapContext, "Arial", (*pic_size - c.pageBorder) / 5.0, kCGEncodingMacRoman);
		CGContextSetLineWidth(bitmapContext, (*pic_size - c.pageBorder)/100.0);
		CGContextSetCharacterSpacing(bitmapContext, 0);
		CGContextSetTextDrawingMode(bitmapContext, kCGTextFillStroke);
		CGContextSetRGBFillColor(bitmapContext, 0, 1, 0, .5);
		CGContextSetRGBStrokeColor(bitmapContext, 0, 0, 1, 1);
		CGContextShowTextAtPoint(bitmapContext, (*pic_size - c.pageBorder) / 10.0, (*pic_size - c.pageBorder) / 2.0, &imagePath[strlen(imagePath) - 11], 7);
	}
#endif

	CGContextRelease(bitmapContext);
	CGImageRelease(imageRef);
	CFRelease(imageSourceRef);

	if (*pic_size == 0)
		*pic_size = width;
	else
		assert((width == *pic_size) && (height == *pic_size));

	return image_data;
}

void * vtuDecompressImageBuffer(const void *file_data, uint32_t file_size, uint32_t *pic_size)
{
	CGDataProviderRef dataprov = CGDataProviderCreateWithData(NULL, file_data, file_size, NULL);
	CGImageSourceRef imageSourceRef = CGImageSourceCreateWithDataProvider(dataprov, NULL);

	return _vtuDecompressMac(imageSourceRef, pic_size, NULL);
}

void * vtuDecompressImageFile(const char *imagePath, uint32_t *pic_size)
{
	CFURLRef url = CFURLCreateFromFileSystemRepresentation(NULL, (const UInt8 *)imagePath, strlen(imagePath), 0);
	CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL(url, NULL);

	CFRelease(url);
	if (!imageSourceRef)
		vt_fatal("Error: tile directory must be corrupt (or wrong MIP_CHAIN_LENGTH?), there is no file at: %s", imagePath);

	return _vtuDecompressMac(imageSourceRef, pic_size, imagePath);
}

#elif IMAGE_DECOMPRESSION_LIBRARY == DecompressionDevil

static bool ilInited = FALSE;

#include "IL/il.h"
void * vtuDecompressImageFile(const char *imagePath, uint32_t *pic_size)
{
	int format = 0;
	ILuint ilName;
	char *data;

	if (!ilInited)
	{
		ilInit();
		ilOriginFunc(IL_ORIGIN_UPPER_LEFT);
		ilEnable(IL_ORIGIN_SET);
		ilInited = TRUE;
	}

	ilGenImages(1, &ilName);
	ilBindImage(ilName);
	if (!ilLoadImage(imagePath))
		vt_fatal("Error: tile directory must be corrupt (or wrong MIP_CHAIN_LENGTH?), there is no file at: %s", imagePath);

	data = (char *) ilGetData();
	format = ilGetInteger(IL_IMAGE_FORMAT);

	if ((format != IL_BGR) && (format != IL_RGB))
		vt_fatal("Error: texture at: %s seems to be of wrong kind (%u)", imagePath, format);

	if (*pic_size == 0)
		*pic_size = ilGetInteger(IL_IMAGE_WIDTH);
	else
		assert((ilGetInteger(IL_IMAGE_WIDTH) == *pic_size) && (ilGetInteger(IL_IMAGE_HEIGHT) == *pic_size));

	char *image_data = (char *)malloc(c.pageMemsize);
	memcpy(image_data, data, c.pageMemsize);
	ilDeleteImages(1, &ilName);

	return image_data;
}

void * vtuDecompressImageBuffer(const void *file_data, uint32_t file_size, uint32_t *pic_size)
{
	int format = 0;
	ILuint ilName;
	char *data;

	if (!ilInited)
	{
		ilInit();
		ilOriginFunc(IL_ORIGIN_UPPER_LEFT);
		ilEnable(IL_ORIGIN_SET);
		ilInited = TRUE;
	}

	ilGenImages(1, &ilName);
	ilBindImage(ilName);
	ilLoadL(IL_TYPE_UNKNOWN, file_data, file_size);

	data = (char *) ilGetData();
	format = ilGetInteger(IL_IMAGE_FORMAT);

	if ((format != IL_BGR) && (format != IL_RGB))
		vt_fatal("Error: texture seems to be of wrong kind (%u)", format);

	if (*pic_size == 0)
		*pic_size = ilGetInteger(IL_IMAGE_WIDTH);
	else
		assert((ilGetInteger(IL_IMAGE_WIDTH) == *pic_size) && (ilGetInteger(IL_IMAGE_HEIGHT) == *pic_size));

	char *image_data = (char *)malloc(c.pageMemsize);
	memcpy(image_data, data, c.pageMemsize);
	ilDeleteImages(1, &ilName);

	return image_data;
}

#elif IMAGE_DECOMPRESSION_LIBRARY == DecompressionImageMagick

namespace MC
{
#include <magick/MagickCore.h>
}
void * vtuDecompressImageFile(const char *imagePath, uint32_t *pic_size)
{
	static int times = 0;
	if (times == 0)
	{	MagickCoreGenesis("/Users/julian/Documents/Development/_BUILD/Debug/VTDemo.app/Contents/MacOS/VTDemo", MC::MagickFalse); times++;}

	MC::ExceptionInfo *exception = MC::AcquireExceptionInfo();

	MC::ImageInfo *image_info = CloneImageInfo((MC::ImageInfo *) NULL);

	strcpy(image_info->filename, imagePath);
	MC::Image *image = ReadImage(image_info, exception);
	char *image_data = (char *)malloc(c.pageMemsize);

	assert(image);

	const MC::PixelPacket *p = GetVirtualPixels(image, 0, 0, image->columns, image->rows, exception);

	if (*pic_size == 0)
		*pic_size = image->columns;
	else
		assert((image->columns == *pic_size) && (image->rows == *pic_size));

	memcpy(image_data, p, c.pageMemsize);
	DestroyImage(image);

	return image_data;
}

void * vtuDecompressImageBuffer(const void *file_data, uint32_t file_size, uint32_t *pic_size)
{
	static int times = 0;
	if (times == 0)
	{	MagickCoreGenesis("/Users/julian/Documents/Development/_BUILD/Debug/VTDemo.app/Contents/MacOS/VTDemo", MC::MagickFalse); times++;}

	MC::ExceptionInfo *exception = MC::AcquireExceptionInfo();

	MC::ImageInfo *image_info = CloneImageInfo((MC::ImageInfo *) NULL);
	MC::Image *image = BlobToImage(image_info, file_data, file_size, exception);
	char *image_data = (char *)malloc(c.pageMemsize);

	assert(image);

	const MC::PixelPacket *p = GetVirtualPixels(image, 0, 0, image->columns, image->rows, exception);

	if (*pic_size == 0)
		*pic_size = image->columns;
	else
		assert((image->columns == *pic_size) && (image->rows == *pic_size));

	memcpy(image_data, p, c.pageMemsize);
	DestroyImage(image);

	return image_data;
}

#elif IMAGE_DECOMPRESSION_LIBRARY == DecompressionLibJPEG

#include "jpeglib.h"
void * vtuDecompressImageFile(const char *imagePath, uint32_t *pic_size)
{
	struct jpeg_decompress_struct cinfo;
	struct jpeg_error_mgr jerr;

	FILE *f = fopen(imagePath, "rb");

	assert(f);

	cinfo.err = jpeg_std_error(&jerr);
	jpeg_create_decompress(&cinfo);
	jpeg_stdio_src(&cinfo, f);
	jpeg_read_header(&cinfo, TRUE);
	jpeg_start_decompress(&cinfo);

	assert(cinfo.output_components == 3);

	char *image_data = (char *)malloc(cinfo.output_width * cinfo.output_width * 3);
	char *rows[cinfo.output_width];

	for (uint16_t i = 0; i < cinfo.output_width; i++)
		rows[i] = image_data + (cinfo.output_width - 1 - i) * cinfo.output_width * 3;

	while (cinfo.output_scanline < cinfo.output_height)
    {
		jpeg_read_scanlines(&cinfo, (JSAMPLE **)&rows[cinfo.output_scanline], cinfo.output_width);
	}

	if (*pic_size == 0)
		*pic_size = cinfo.output_width;

	assert((cinfo.output_width == *pic_size) && (cinfo.output_height == *pic_size));

	jpeg_finish_decompress(&cinfo);
	jpeg_destroy_decompress(&cinfo);

	fclose(f);

	return image_data;
}
void * vtuDecompressImageBuffer(const void *file_data, uint32_t file_size, uint32_t *pic_size)
{
	struct jpeg_decompress_struct cinfo;
	struct jpeg_error_mgr jerr;
	char *image_data = (char *)malloc(c.pageMemsize);
	char *rows[c.pageDimension];

	cinfo.err = jpeg_std_error(&jerr);
	jpeg_create_decompress(&cinfo);
	jpeg_mem_src(&cinfo,(unsigned char *) file_data, file_size);
	jpeg_read_header(&cinfo, TRUE);
	jpeg_start_decompress(&cinfo);

	assert(cinfo.output_components == 3);

	for (uint16_t i = 0; i < c.pageDimension; i++)
		rows[i] = image_data + (c.pageDimension - 1 - i) * c.pageDimension * 3;

	while (cinfo.output_scanline < cinfo.output_height)
    {
		jpeg_read_scanlines(&cinfo, (JSAMPLE **)&rows[cinfo.output_scanline], c.pageDimension);
	}

	if (*pic_size == 0)
		*pic_size = cinfo.output_width;
	else
		assert((cinfo.output_width == *pic_size) && (cinfo.output_height == *pic_size));

	jpeg_finish_decompress(&cinfo);
	jpeg_destroy_decompress(&cinfo);

	return image_data;
}

#elif IMAGE_DECOMPRESSION_LIBRARY == DecompressionLibPNG

#include <png.h>

typedef struct {
	const unsigned char *data;
	png_size_t size;
	png_size_t seek;
} pngData;

static void _readPngData(png_structp png_ptr, png_bytep data, png_size_t length)
{
	pngData *d = (pngData*) png_get_io_ptr(png_ptr);

	if (d) {
		for (png_size_t i = 0; i < length; i++) {
			if (d->seek >= d->size) break;
			data[i] = d->data[d->seek++];
		}
	}
}

void * vtuDecompressImageFile(const char *imagePath, uint32_t *pic_size)
{
	png_structp png_ptr;
	png_infop info_ptr;
	FILE *f = fopen(imagePath, "rb");
	char *image_data = (char *)malloc(c.pageMemsize);
	char *rows[c.pageDimension];

	assert(f);

	png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
	assert(png_ptr);

	info_ptr = png_create_info_struct(png_ptr);
	assert(info_ptr);

	assert(setjmp(png_jmpbuf(png_ptr)) == 0);

	png_init_io(png_ptr, f);

	for (uint16_t i = 0; i < c.pageDimension; i++)
		rows[i] = image_data + i * c.pageDimension * 3;

	png_set_rows(png_ptr, info_ptr, (png_byte **)&rows);
	png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);
	png_get_rows(png_ptr, info_ptr);

	assert((png_get_bit_depth(png_ptr, info_ptr) == 8) && (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB));

	if (*pic_size == 0)
		*pic_size = png_get_image_height(png_ptr, info_ptr);
	else
		assert((png_get_image_height(png_ptr, info_ptr) == *pic_size) && (png_get_image_width(png_ptr, info_ptr) == *pic_size));

	return image_data;
}

void * vtuDecompressImageBuffer(const void *file_data, uint32_t file_size, uint32_t *pic_size)
{
	png_structp png_ptr;
	png_infop info_ptr;
	char *image_data = (char *)malloc(c.pageMemsize);
	char *rows[c.pageDimension];

	png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
	assert(png_ptr);

	pngData d;
	d.data = (const unsigned char *)file_data;
	d.size = file_size;
	d.seek = 0;
	png_set_read_fn(png_ptr, (void *) &d, _readPngData);

	info_ptr = png_create_info_struct(png_ptr);
	assert(info_ptr);

	assert(setjmp(png_jmpbuf(png_ptr)) == 0);

	for (uint16_t i = 0; i < c.pageDimension; i++)
		rows[i] = image_data + i * c.pageDimension * 3;

	png_set_rows(png_ptr, info_ptr, (png_byte **)&rows);
	png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);
	png_get_rows(png_ptr, info_ptr);

	assert((png_get_bit_depth(png_ptr, info_ptr) == 8) && (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB));

	if (*pic_size == 0)
		*pic_size = png_get_image_height(png_ptr, info_ptr);
	else
		assert((png_get_image_height(png_ptr, info_ptr) == *pic_size) && (png_get_image_width(png_ptr, info_ptr) == *pic_size));

	return image_data;
}

#elif IMAGE_DECOMPRESSION_LIBRARY == DecompressionSTBIJPEG

#define STBI_HEADER_FILE_ONLY
#include "stb_image.cc"
void * vtuDecompressImageFile(const char *imagePath, uint32_t *pic_size)
{
	int width, height, bitdepth;

	char * data = (char *)stbi_jpeg_load(imagePath, &width, &height, &bitdepth, STBI_rgb);

	assert(data);

	if (*pic_size == 0)
		*pic_size = width;
	else
		assert(((uint32_t)width == *pic_size) && ((uint32_t)height == *pic_size));

	char *image_data = (char *)malloc(c.pageMemsize);
	for (uint16_t i = 0; i < c.pageDimension; i++)
		memcpy(image_data + i * c.pageDimension * 3, data + (c.pageDimension-i-1) * c.pageDimension * 3, c.pageDimension * 3); //TODO: this isn't performance optimal

	free(data);

	return image_data;
}

void * vtuDecompressImageBuffer(const void *file_data, uint32_t file_size, uint32_t *pic_size)
{
	int width, height, bitdepth;

        char * data = (char *)stbi_jpeg_load_from_memory((const stbi_uc *)file_data, file_size, &width, &height, &bitdepth, STBI_rgb);

	assert(data);

	if (*pic_size == 0)
		*pic_size = width;
	else
                assert(((uint32_t)width == *pic_size) && ((uint32_t)height == *pic_size));

        char *image_data = (char *)malloc(c.pageMemsize);
        for (uint16_t i = 0; i < c.pageDimension; i++)
                memcpy(image_data + i * c.pageDimension * 3, data + (c.pageDimension-i-1) * c.pageDimension * 3, c.pageDimension * 3); //TODO: this isn't performance optimal

        free(data);

        return image_data;
}

#elif IMAGE_DECOMPRESSION_LIBRARY == DecompressionSTBIPNG

#define STBI_HEADER_FILE_ONLY
#include "stb_image.cc"

void * vtuDecompressImageFile(const char *imagePath, uint32_t *pic_size)
{
	int width, height, bitdepth;

	void * data = stbi_png_load(filename, &width, &height, &bitdepth, STBI_rgb);

	assert(data);

	if (*pic_size == 0)
		*pic_size = width;
	else
		assert((width == *pic_size) && (height == *pic_size));

	return data;
}

void * vtuDecompressImageBuffer(const void *file_data, uint32_t file_size, uint32_t *pic_size)
{
	int width, height, bitdepth;

	void * data = stbi_png_load_from_memory((const stbi_uc *)file_data, file_size, &width, &height, &bitdepth, STBI_rgb);

	assert(data);

	if (*pic_size == 0)
		*pic_size = width;
	else
		assert((width == *pic_size) && (height == *pic_size));

	return data;
}
#elif IMAGE_DECOMPRESSION_LIBRARY == DecompressionLibJPEGTurbo
#include "libjpeg-turbo/jpeglib.h"
struct my_src_mgr{
	struct jpeg_source_mgr pub;

	JOCTET eoi_buffer[2];
};
static void init_source(j_decompress_ptr cinfo){
}

static boolean fill_input_buffer(j_decompress_ptr cinfo){
	return 1;
}

static void skip_input_data(j_decompress_ptr cinfo, long num_bytes){
	my_src_mgr *src = (my_src_mgr *)cinfo->src;

	if (num_bytes > 0) {
		while (num_bytes > (long)src->pub.bytes_in_buffer){

			num_bytes -= (long)src->pub.bytes_in_buffer;
			fill_input_buffer(cinfo);
		}
	}

	src->pub.next_input_byte += num_bytes;
	src->pub.bytes_in_buffer -= num_bytes;
}

static void term_source(j_decompress_ptr cinfo){
}

void jpeg_memory_src(j_decompress_ptr cinfo, unsigned char const *buffer, size_t bufsize){

	my_src_mgr *src;
	if (! cinfo->src){

		cinfo->src = (jpeg_source_mgr*)(*cinfo->mem->alloc_small)((j_common_ptr)cinfo, JPOOL_PERMANENT, sizeof(my_src_mgr));
	}

	src = (my_src_mgr *)cinfo->src;
	src->pub.init_source = init_source;

	src->pub.fill_input_buffer = fill_input_buffer;
	src->pub.skip_input_data = skip_input_data;

	src->pub.resync_to_restart = jpeg_resync_to_restart;
	src->pub.term_source = term_source;

	src->pub.next_input_byte = buffer;
	src->pub.bytes_in_buffer = bufsize;
}

void * vtuDecompressImageBuffer(const void *file_data, uint32_t file_size, uint32_t *pic_size)
{
	struct jpeg_decompress_struct cinfo;
	struct jpeg_error_mgr jerr;

	char *image_data = (char *)malloc(REALTIME_DXT_COMPRESSION ? c.pageDimension * c.pageDimension * 4 : c.pageMemsize);
	char *rows[c.pageDimension];

	cinfo.err = jpeg_std_error(&jerr);
	jpeg_create_decompress(&cinfo);
	jpeg_memory_src(&cinfo,(unsigned char *) file_data, file_size);

	jpeg_read_header(&cinfo, TRUE);
	if (REALTIME_DXT_COMPRESSION)	cinfo.out_color_space = JCS_EXT_RGBX;
	jpeg_start_decompress(&cinfo);

	if (cinfo.output_components == (REALTIME_DXT_COMPRESSION ? 4 : 3))
	{
		for (uint16_t i = 0; i < c.pageDimension; i++)
			rows[i] = image_data + (c.pageDimension - 1 - i) * c.pageDimension * (REALTIME_DXT_COMPRESSION ? 4 : 3);

		while (cinfo.output_scanline < cinfo.output_height)
		{
			jpeg_read_scanlines(&cinfo, (JSAMPLE **)&rows[cinfo.output_scanline], 256);
		}

		if (*pic_size == 0)
			*pic_size = cinfo.output_width;
		else
			assert((cinfo.output_width == *pic_size) && (cinfo.output_height == *pic_size));

		jpeg_finish_decompress(&cinfo);
	}
	else
		printf("WARNING: skipping decompressing JPG with wrong number of components\n");

	jpeg_destroy_decompress(&cinfo);

	return image_data;
}
void * vtuDecompressImageFile(const char *imagePath, uint32_t *pic_size)
{
	struct jpeg_decompress_struct cinfo;
	struct jpeg_error_mgr jerr;

	FILE *f = fopen(imagePath, "rb");

	assert(f);

	cinfo.err = jpeg_std_error(&jerr);
	jpeg_create_decompress(&cinfo);
	jpeg_stdio_src(&cinfo, f);
	jpeg_read_header(&cinfo, TRUE);
	if (REALTIME_DXT_COMPRESSION)	cinfo.out_color_space = JCS_EXT_RGBX;
	jpeg_start_decompress(&cinfo);

	if (*pic_size == 0)
		*pic_size = cinfo.output_width;

	assert((cinfo.output_width == *pic_size) && (cinfo.output_height == *pic_size));

	char *image_data = (char *)malloc(cinfo.output_width * cinfo.output_width * (REALTIME_DXT_COMPRESSION ? 4 : 3));
	char *rows[cinfo.output_width];

	if (cinfo.output_components == (REALTIME_DXT_COMPRESSION ? 4 : 3))
	{
		for (uint16_t i = 0; i < cinfo.output_width; i++)
			rows[i] = image_data + (cinfo.output_width - 1 - i) * cinfo.output_width * (REALTIME_DXT_COMPRESSION ? 4 : 3);

		while (cinfo.output_scanline < cinfo.output_height)
		{
			jpeg_read_scanlines(&cinfo, (JSAMPLE **)&rows[cinfo.output_scanline], cinfo.output_width);
		}

		jpeg_finish_decompress(&cinfo);
	}
	else
		printf("WARNING: skipping decompressing JPG with wrong number of components, path: %s\n", imagePath);

	jpeg_destroy_decompress(&cinfo);

	fclose(f);

	return image_data;
}
#else
	#error NO_IMAGE_DECOMPRESSION_LIBRARY
#endif

redpajama_set_name: RedPajamaGithub


text:
\section{Introduction}

Our understanding of supersymmetric field theories was greatly advanced by
the seminal work of Seiberg and Witten \cite{sw}.
Very early on it has been suggested that
there should also be important ramifications for string theory which have
then, in due course, been found and worked out \cite{kklmv,kkv,bjpsv}.
The relation between
string theory and supersymmetric field theory has become most transparent in
the work of Hanany and Witten \cite{han}
who turned the brane technology into
an efficient and easy tool to engineer supersymmetric field theories. Various
dualities could be demonstrated this way; they are very natural in the
brane picture \cite{egk,esj,bsty,bh,egkrs,tatar}; see also \cite{bjpsv,ov,ahn}
for an alternative brane picture of field theory dualities.

One of the great surprises of the original work of Seiberg and Witten
was that the low energy effective action of asymptotically free N=2
supersymmetric field theories could be exactly computed. In this
computation, which is possible due to the holomorphic structure of the
Lagrangian, an auxiliary Riemann surface appears, whose period matrix
is identified with the gauge couplings of the theory in its Coulomb
phase. It was subsequently shown how this Riemann surface appears
geometrically in string compactification on Calabi-Yau manifolds as a
supersymmetric two-cycle around which the Type IIA twobrane wraps,
leaving a supersymmetric point-particle in uncompactified space-time
\cite{kklmv,klmvw,lmw}; for excellent recent reviews, see
\cite{lerche,klemm}.

Recently Witten \cite{witten}
has shown, how the Riemann surfaces naturally appear
as supersymmetric cycles in the M theory context, by reading the N=2
supersymmetric brane configurations on the Type IIA theory as one convoluted
M theory fivebrane, whose internal part, which extends into the
eleventh dimension, is a Riemann surface, holomorphically embedded into
$\mathbb{R}^3\times\mathbf{S}^1$.
$\mathbb{R}^3$ are the three internal dimensions tangential to the
configuration of Dirichlet fourbranes (D4 branes) and NS fivebranes,
and $\mathbf{S}^1$ is the circle on which the eleventh dimension is
compactified.
Independently, Evans, Johnson and Shapere \cite{esj}
also noticed the connection between M theory, Type IIA brane
configurations and Seiberg-Witten curves; their starting point was the
generalization of the work of \cite{egk} to orthogonal and symplectic
groups, with the orientifold plane playing a crucial role.
Witten's analysis was restricted to the case of $A_r$ gauge groups. We
present here the extension of his results to the other classical
groups.

Orthogonal and symplectic groups have previously been discussed in the
brane context \cite{esj,egkrs,ov,ahn}. Here the appearance of an
orientifold plane complicates the discussion. Our goal is to
understand these theories in M theory. One line of attack would be to
argue for the brane configuration, which must of course respect the
orientifold symmetries, and then write down the equation for the
Riemann surface which should then agree with the hyperelliptic curves
which have been constructed purely from field theory
considerations. We have however chosen the reverse strategy, namely
starting from the known curves, we infer the brane
configurations. Here the curves which have been discussed in relation
of Seiberg-Witten theory with integrable systems are the most
appropriate. We find that the curve displays the orientifold plane
only indirectly, namely via the symmetry of the brane
configuration. Since in M theory the brane configuration is smooth,
there is no rationale for the jump in RR charge of the orientifold
fourplane (O4 plane) as it crosses a NS fivebrane. This was necessary in
\cite{esj}
to explain the symplectic flavor symmetry of the dual orthogonal
gauge theory. In addition, in order to get a smooth transition from
the electric to the magnetic theory, the authors of ref.\cite{egkrs}
had to assume that two of the D4 branes which extend between the two
NS fivebranes, must position themselves on the O4 plane. In the M theory
picture we find two infinite D4 branes which account for both of these
phenomena.

An outline of this paper is as follows. In section two we present our
interpretation of the Seiberg-Witten curves in M and Type IIA
theory. We also comment on the interpretation of the orientifold
plane. In this section matter always comes, in Type II language, from
D4 branes. D6 branes enter the stage in section 3. We end with
conclusions and an outlook.

While we were completing this manuscript, a preprint by
K. Landsteiner, E. Lopez and D. Lowe, ``N=2 Supersymmetric Gauge
Theories, Branes and Orientifolds", hep-th/9705199 appeared, which
has substantial overlap with our work.

\section{Models With SO And Sp Gauge Groups}

\subsection{Generalities}

We will use the same conventions as \cite{witten}. The classical brane
configuration in the Type IIA theory consists of infinite solitonic fivebranes
with worldvolume extending in the $x^0, x^1, x^2, x^3, x^4, x^5$
directions and Dirichlet fourbranes with worldvolume along $x^0, x^1, x^2,
x^3, x^6$.
In section 3 we will also introduce D6 branes with worldvolume along
$(x^0,x^1,x^2,x^3,x^7,x^8,x^9)$. All brane configurations considered preserve
$1/4$ of the 32 supercharges of the Type IIA theory. As in
ref.\cite{witten} we have effectively a four-dimensional $N=2$
supersymmetric theory on the world volume of the D4 branes.
We define
\begin{eqnarray}
v & = & x^4 + i x^5 \\
s & = & (x^6 + i x^{10})/R
\end{eqnarray}
where $x^{10}$ is a periodic coordinate $x^{10} \sim x^{10} + 2\pi R$.
It is convenient to make a transformation from the cylinder with
coordinate $s$ to the complex plane $t = \exp{(-s)}$.

In M theory (compactified in the $x^{10}$ direction on a circle of
radius $R$) the configuration is described by a single
fivebrane with a complicated worldvolume history
\begin{equation}
\mathbb{R}^{3,1} \times \Sigma ~.
\end{equation}
Here $\Sigma$ is a (non-compact) Riemann surface
holomorphically embedded in the complex twoplane
parametrized by $v$ and $t$. $\Sigma$ is a supersymmetric cycle in the
sense of \cite{bbs}.
Since in the Type IIA theory we deal with infinitely extended branes,
the Riemann surface which appears in M-theory is non-compact.
Here we always refer to the compactified surface; see
\cite{witten} for explanation.
We will now discuss the case of single $B_r,\,C_r$ and $D_r$ group
factors, followed by the discussion of multiple group factors. The
starting point will be the spectral curves associated with the various
simple groups, as given in \cite{mw,mmm}.

\subsection{SO(2r)}

For the curve for N=2 gauge theories with gauge
group $SO(2r)$  we take
\begin{eqnarray}
F(t,v)  = t^2 v^2 + 2 t P_r (v) + v^2 = 0
\eeal{curve}
with
\begin{equation}
P_r(v) = v^{2r} + c_2 v^{2r-2} + c_4 v^{2r-4} + \ldots + \tilde{c}_r^2 ~.
\end{equation}
$c_{2n}\,,~n=1 \ldots r-1$ denote gauge invariant operators
(Casimirs) of order $2n$ and $\tilde{c}_r$ is the exceptional Casimir
of order $r$. Via the substitution $t \to (t-P_r)/v^2$ these curves
assume the form of the $SO(2r)$ hyperelliptic curves of
ref. \cite{bl}.  Substituting $t\to t/v^2$ we find the $D_n$ curves of
refs.\cite{mw,mmm}.

For fixed $v$ the polynomial is of degree two in $t$ and the two roots
of eq. \equ{curve} correspond to the fact that we have
a Type IIA configuration with two NS fivebranes. In general the
degree of the polynomial in $t$ equals the number of NS fivebranes.

On the other hand $F(t,v)$ is of degree $2r$ in $v$, reflecting the
presence of
$2r$ D4 branes. Since the polynomial is even in $v$ the
configuration is symmetric under $v \to -v$. This hints towards the
existence of an orientifold plane at  $v=0$, parallel to the D4 branes, in the
classical Type IIA picture. This O4 plane enforces a reflection
symmetric brane configuration. This incidentally, automatically removes the
IR divergence in the five-brane kinetic energy, which, in the $U(r)$
case discussed in \cite{witten} led to a freezing out of the
$U(1)\subset U(r)$ factor associated with the motion of the center of
position of the D4 branes.

To get further information on the brane
configuration, we now investigate the behavior of the curve in certain
limits.

First we want to look at the limit where $v$ is
small. If $\tilde{c}_r = 0$ the polynomial factors into
$v^2$ times a factor which is appropriate for the curve for gauge
group $SU(2r-2)$ with all odd Casimir invariants set to zero. This
corresponds to the situation where two infinite D4 branes coincide at
$v=0$ which, naively, would imply additional massless states from zero
length strings between these two branes. But from
a careful analysis in field theory \cite{bl} we know that the
monodromy at this singularity is trivial. Therefore there are no
additional particles becoming massless.
This observation was first made in the context of Type IIA brane
configurations in ref.\cite{esj}.

In the case of
non-zero $\tilde{c}_r$ the curve becomes, again in the limit of small $v$,
\begin{equation}
t v^2 + 2 \tilde{c}_r^2 + v^2/t = 0~.
\end{equation}
Going to small  $t$ (i.e. $s \to \infty$) requires $t\sim v^2$,
which means that two roots of $F(v)$ asymptotically
approach $v = 0$. For large $t$ ($s \to -\infty$) we find $t\sim1/v^2$
which indicates two roots of $F(v)$ approaching $v=0$.
We interpret this as two infinite D4 branes
which are deformed in the region of small $x^6$ but approach
the position $v=0$ as $x^6 \to\pm \infty$.

The question of how to identify segments of the curve with branes of Type IIA
can be addressed as follows. Equation \equ{curve} defines a multivalued map
from the $v$ plane to the $t$ plane with $4r$ branch points.
We want to identify the objects that extend to $x^6\to\infty$ with $v$ small.
Examining the map mentioned above, we find that circling $v=0$ once
maps to circling $t=0$ {\it twice}. But
a closed contour around the origin of the $t$ plane means going around
the $\mathbf{S}^1$. A D4-brane is distinguishable from a NS brane in
that the former wraps $\mathbf{S}^1$ and the latter does not. We thus
identify the objects that stretch to $x_6=\pm \infty$ as {\it two} D4 brane.
Another way to see that we are dealing with two semi-infinite D4
branes is that for the codimension one subspace of the moduli space
defined by $\tilde c_r=0$ we have two branes precisely at $v=0$, which
means that they have to wrap around the $\mathbf{S}^1$. By continuity
this also holds for generic values of $\tilde c_r$.

Let us now consider the situation where $v$ is large.
For $t$ large ($s \to -\infty$), the roots for $v$ are approximately at
\begin{equation}
t \equiv v^{2r-2} ~,
\end{equation}
and for $t$ very small ($s \to \infty$) approximately at
\begin{equation}
t \equiv v^{-(2r-2)} ~.
\end{equation}
This describes the bending of an NS fivebrane when a net number of
$2r-2$ D4 branes end on it from the right and the left,
respectively. Again, note that the D4 branes are located symmetrically
with respect to the $v=0$ plane. $2(r-1)$ of the D4
branes have the same asymptotics which diverges exponentially. It is
to be identified with the position of the NS fivebranes at large $v$.
In addition there are two infinite D4 branes which
asymptotically approach $v = 0$, the position of the IIA orientifold
plane which is not directly visible in the M theory picture; it is
encoded in the curve only through the symmetry and the presence of the
infinite D4 branes.

As an example we have drawn in figure 1 the M5 brane for gauge group
$SO(10)$ with generic values of the moduli. Each line corresponds to
two D4 branes due to the $v \to -v$ symmetry.  More specifically we
have chosen a specific slice through $\Sigma$ with $x^{10} =
0$. Therefore, each of the lines is actually a tube (times
$\mathbb{R}^{3,1}$). The horizontal axis corresponds to $x^6$ and the
vertical axis to the absolute value of $v$.

\begin{figure}
\begin{center}
 \resizebox{8cm}{!}{
   \includegraphics{br1}
   }
\end{center}
\caption{The M5 brane for gauge group $SO(10)$ }
\end{figure}

The generalization to the cases with $N_f=N_1+N_2$ matter multiplets is
\begin{equation}
v^2 t^2\prod_{j=1}^{N_1}(v^2-m_j^2) + 2 t P_r(v)  + v^2 \prod_{i=N_1
  + 1}^{N_f} (v^2 - m_i^2) =0~,
\end{equation}
which corresponds to adding $N_1$ semi-infinite mirror pairs of
fourbranes to the left of all fivebranes  and $N_2$ to the right.

\subsection{SO(2r+1)}

\begin{figure}
\begin{center}
 \resizebox{8cm}{!}{
   \includegraphics{br2}
   }
\end{center}
\caption{$SO(5)$}
\end{figure}

For gauge groups $SO(2r+1)$ we need a brane setup with $2r+1$ D4 branes
between the two NS fivebranes. This is achieved by curves of the form
\begin{equation}
F(t,v) = t^2 v^2 + 2 t v P_r (v^2) + v^2 = 0 ~,
\quad
P_r(v) = v^{2r} + c_2 v^{2r-2} + c_4 v^{2r-4} + \ldots + c_{2r} ~.
\end{equation}
which are related, via the
substitution $t\to t/v^2$ to the  $B_r$ curves of
\cite{mw,mmm}, whereas $t \to (t-P)/v$ reproduces those of \cite{ds}.
Important is the overall factor $v$, which is needed to get the
correct number of D4 branes.
Note that the same argument that was used in section 2.2 to
demonstrate that there are indeed two semi-infinite D4 branes stretching
to $x^6\to\pm\infty$, now tells us that there is just one of these branes.
In addition there is still the infinite D4 brane at $v=0$ which necessarily
wraps around the $\mathbf{S}^1$.

Figure 2 shows an example with gauge group $SO(5)$. Every branch
corresponds now to one D4 brane in contrast to the $SO(2r)$ case because of
a different reflection symmetry; cf. below.
Furthermore, the horizontal line
corresponds to the additional infinite D4 brane at $v=0$.

We now have again two D4 brane in the region to the left and to the
right of the NS branes.
As for $SO(2r)$ they approach $v=0$ as $x^6 \to \pm
\infty$. $F(t,v)=0$ is now invariant under $(t,v) \to (-t,-v)$. Note
that $t\to -t$ implies $x^{10}\to x^{10}+ \pi R$. This means that the
orientifolding also involves a non-trivial transformation in the
$x^{10}$ direction.

In the $SO(2r+1)$ case the singularity at $c_{2r}=0$ has a non-trivial
monodromy, in contrast to the $\tilde{c}_r = 0$ singularity of the
$SO(2r)$ case, and a dyon becomes massless which is related to a short
root of the Lie algebra of $SO(2r+1)$ \cite{bl}.
In the Type IIA picture there is an additional
D4 brane on top of the orientifold plane such that there are
additional states from strings between this special D4 and the other D4
branes. These states are necessary to lift the $SO(2r)$ multiplet to an
$SO(2r+1)$ multiplet. In our M theory configuration we have taken into
account this additional D4 at $v=0$ by introducing an additional
factor of $v$ in the curve. As $c_{2r} \to 0$ the curve develops
another infinite D4 brane on top of that which gives rise to an additional
massless state, as expected.

Adding matter in the fundamental representation is straightforward: we
attach $N_1$ semi-infinite D4 branes (and their mirror images) from the left
to the left NS 5 brane and $N_2$ semi-infinite D4 branes (and their
mirror images) from the right to the right NS 5 brane, with
$N_1+N_2=N_F$ being the total number of fundamental flavors. The curve
then takes the form
\begin{equation}
v^2 t^2 \prod_{j=1}^{N_1}(v^2-m_j^2)  + 2 t v P_r(v)  + v^2\prod_{i=N_1
  + 1}^{N_f} (v^2 - m_i^2) =0~.
\end{equation}

\subsection{Sp(2r)}

We take the holomorphic curve which is to represent the brane
configuration in the pure gauge case to be
\begin{equation}
t^2+2 t v^2 P_r(v) +1=0\,,~~P_r (v)=v^{2r}+c_2 v^{2r-2}+\dots+c_{2r}\,.
\end{equation}
Note the symmetry under $v\to -v$. Via the substitution $t\to t v^2$
this curve is seen to be equivalent to the $C_r$ curve in \cite{mmm}.
The relation with the curves of \cite{as} is however not
so obvious. \footnote{We acknowledge instructive correspondence about
the various forms of the curves with A. Mironov and A. Morozov. Note
that there is also a disagreement between the $C_r$ curves of
\cite{mw} and \cite{mmm}.}

Figure 3 shows the generic form of the curve for gauge group
$Sp(6)$. As in the $SO(2r)$ case each branch corresponds to two D4
branes. From the form of the curve we read off that there are two
additional D4 branes between the two NS fivebranes.
\begin{figure}
\begin{center}
 \resizebox{8cm}{!}{
   \includegraphics{br3}
   }
\end{center}
\caption{$Sp(6)$}
\end{figure}
These two additional D4 branes have the property that they touch the
orientifold at $v=0, t_{1,2} = \pm i$ for all values of the
moduli. This is not visible in  picture 3 since we took a slice where
$t$ is real.

Again, adding matter in the fundamental $2r$--dimensional representation
of $Sp(2r)$ is straightforward: we simply add $N_1$ and  $N_2$
semi-infinite D4 branes (and their mirror images) to the left and to
the right, respectively, with $N_1+N_2=N_F$.

We have thus seen that there is a natural correspondence between the
$A_r,B_r,C_r,D_r$ Seiberg-Witten curves as spectral curves of
appropriate integrable systems and the Type IIA brane configuration
which leads to $SU(r)$, $SO(2r)$, $SO(2r+1)$ and $Sp(2r)$ gauge theories
on the D4 branes. In the M theory context these curves simply describe
the internal part of the five-brane.

\subsection{The Orientifold Plane}

We would now like to examine the question how the structure of an
orientifold emerges from the M theory curves that correspond to the
orthogonal and symplectic groups.
In string theory we have, as a consequence of dividing by the
world sheet parity inversion times a space-time symmetry, an
orientifold plane which also carries RR charge, namely if $p$ is the
dimension of the orientifold plane, $\pm 2^{p-5}$ units of charge of a
physical Dp brane, i.e. the Dp brane and its mirror image.
If we normalize the RR charge of a physical D4 brane
to be +2, the charge of an O4 plane is $\pm1$. In the geometric brane
arrangement of the Type IIA theory, the orientifold plane makes its
appearance by enforcing symmetry under reflection on the orientifold
plane, but, in the discussion of Seiberg dualities with SO and Sp
gauge groups, also via its RR charge, in particular via its charge
induced on the NS branes. Central in the discussion of \cite{esj} and
\cite{egkrs} was the fact that the charge of the orientifold plane
switches sign on traversing a NS fivebrane, so that in the simplest
arrangement of two NS fivebranes its charge is $-1$  between the five
branes and +1 outside. This is for orthogonal gauge groups and
the sign of the charge is reversed for symplectic groups.

Let us now see how the
orientifold plane and these charge assignments might be understood
from the M-theoretic point of view. We saw that with the $SO(2r)$
projection we get additional semi-infinite D4 branes, two on each side
of the  NS fivebrane arrangement, while with the $SO(2r+1)$ projection we
get one infinite D4 and one additional semi-infinite D4 brane on each
side. The $Sp$ projection leads to two
additional D4 branes between the two NS fivebranes. If we now agree to
assign RR charge {$-1$} to an infinite four-dimensional four-plane along
the $(x^1,x^2,x^3,x^6)$ direction, with $x^4 = x^5 = 0$ and $x^7,x^8,x^9$
fixed by the NS fivebranes, we find that the $SO(2r)$ projection effectively
leads to a charge assignment $(+1,-1,+1)$ for the three regions to the
left, between and to the right of the two NS fivebranes. For the $Sp$
projection we get $(-1,+1,-1)$ and for the $SO(2r+1)$ projection
$(+1,0,+1)$ instead.

\subsection{Product Gauge Groups}

We now consider more general models with chains of NS
fivebranes connected by D4 branes. The $n+1$ fivebranes are labeled
from $0$ to $n$ and the $(\a - 1)$-th fivebrane is connected to the $\a$-th
fivebrane by $k_\a$ D4 branes.

As in the $N = 1$ supersymmetric case \cite{tatar} it is not possible
to create models with gauge groups $SO-SO-\ldots$ or $Sp-Sp-\ldots$, only
alternating chains of the form $SO-Sp-SO- \ldots$ or $Sp-SO-Sp-
\ldots$ are possible.  E.g. The second possibility is realized by the
following curve:
\begin{equation}
F(t,v) = t^n + t^{n-1} v^2 P_1(v) + t^{n-2} P_2(v) + t^{n-3} v^2
P_3(v) + t^{n-4} P_4 + \ldots = 0
\end{equation}
with
\begin{equation}
P_\a(v) = v^{2 r_\a} + c^{(\a)}_2 v^{2 r_\a-2} + c^{(\a)}_4 v^{2 r_\a-4} +
\ldots +  c^{(\a)}_{2 r_\a} ~.
\end{equation}
{}From the previous sections it is clear that this must correspond to a
gauge theory with gauge group
\begin{equation}
G = Sp(2 r_1) \otimes SO(2 r_2) \otimes Sp(2 r_3) \otimes \ldots
\end{equation}
and matter content
\begin{equation}
\bigoplus_{\a=1}^{n-1} (2 r_\a,2 r_{\a+1}) ~.
\end{equation}
In the case that the chain starts with an $SO$ gauge factor the first
terms of the curve are
\begin{equation}
t^n v^2 + t^{n-1} P_1(v) + t^{n-2} v^2 P_2(v) + \ldots = 0 ~.
\end{equation}
In Figure 4 we have drawn a simple example with three gauge group
factors $G = Sp(6) \times SO(10) \times Sp(6)$. The branches going to
infinity for large Re $s$ correspond to the four NS fivebranes. They
are all bent differently according to the number of D4 branes ending
on them from the left and the right. Each branch corresponds to two D4
branes in a Type IIA configuration.
\begin{figure}
\begin{center}
 \resizebox{8cm}{!}{
   \includegraphics{br4}
   }
\end{center}
\caption{$Sp(6) \times SO(10) \times Sp(6)$}
\end{figure}
Chains without matter and $SO(2r+1)$ factors are not possible as
follows immediately from our discussion of the curves and the brane
configurations derived from it.

We can add matter by putting semi-infinite D4 branes in the usual
way. For example we can multiply
the highest power of $t$ by $\prod_{i=1}^{N_f} (v^2 - m_i^2)$
which will lead to $N_f$ matter hypermultiplets in the
fundamental representation of the first gauge group factor, $SO(2
r_1)$ or $Sp(2 r_1)$.

If we compactify these chains on a circle $\mathbf{S}^1$ in the $x^6$
direction we find the generalizations of the elliptic models of
\cite{witten}. This means that the semi-infinite D4 branes to the left
and to the right are connected and produce an additional gauge group
factor. This is only consistent if we have an even number of NS branes.
In this case the gauge group is
\begin{equation}
G = SO(2 r_1) \times Sp(2 r_2) \times SO(2 r_3) \times Sp(2 r_4)
\times \ldots \times  Sp(2 r_{2 n}) ,
\end{equation}
and matter comes in the usual mixed representations with the exception
that there is an additional hypermultiplet in the $(2 r_{2n}, 2 r_1)$
representation. If the number of D6 branes $b_l = 0$ (cf. below)
one can make the
beta functions vanish for all gauge group factors.
\begin{equation}
r_{2 i +1} = r_{2 j} + 1 = n + 1, \textrm{for} ~1 \leq i,j \leq n~.
\end{equation}
In this case the gauge group is $SO(2 n + 2) \times Sp(2n) \times \ldots$.

\section{Configurations With D6 Branes}

We now incorporate D6 branes in our
configurations, following closely ref.\cite{witten}.
We now place $d_\a$ D6 branes between the
$(\a -1)$-th and $\a$-th NS fivebrane. Each D6 brane is located at
definite values of $x^4$,$x^5$ and $x^6$. Due to the symmetry $v \to-v$
we always have to place D6 branes in pairs at locations $v$ and $-v$.

The interpretation of the resulting world-volume theory is clear with
gauge group and matter from D4 branes as before.
In addition we have $d_\a$ hypermultiplets in the fundamental
representation of the corresponding orthogonal or symplectic gauge
group. The $v$ positions of the D6 branes give the bare
masses. Their $x^6$ positions decouple from the low energy
four-dimensional physics; they become relevant in the discussion of
Higgs or mixed branches only \cite{witten}.

In this section we will discard the semi-infinite D4 branes
which gave rise to (massive) hypermultiplets; we can
generate an arbitrary number of hypermultiplets using D6
branes only.

Our basic guideline throughout this paper is to interpret type IIA
brane configurations in M theory. So we have to identify the type IIA
sixbrane in M theory which was first done in \cite{town}. We consider
M theory on $\mathbb{R}^{10} \times \mathbf
{S}^1$ which is equivalent to type IIA on $\mathbb{R}^{10}$. The RR $U(1)$
gauge field of type IIA is associated in M theory with shifts along
the $\mathbf{S}^1$. Momentum states in the $\mathbf{S}^1$ direction are
electrically charged with respect to this $U(1)$ and are interpreted
in type IIA as D0 branes. The monopoles of this $U(1)$ correspond to
D6 branes in type IIA.

The object that is magnetically charged under this $U(1)$ is the
Kaluza-Klein monopole $\mathbb{R}^6\times\tilde Q$, where $\tilde Q$
is a Taub-NUT space. It can be described as
\begin{equation}
\tilde Q=\left\lbrace (v,y,z)\in\mathbb{C}^3\Big|yz=
\prod_{a=1}^d(v^2-e_a^2)\equiv Q(v^2)\right\rbrace
\eel{NUT}
Here we have incorporated the fact that the D6 branes
come in pairs located at $\pm e_a$.
As explained in \cite{witten},
asymptotically $y$ and $z$ can be identified with $t$ and $t^{-1}$.
$\tilde Q$ is smooth as long as $e_a\neq e_b\,~\forall\, a\neq b$.
Otherwise the singularity has to be resolved.

We start with models with a single gauge group and
matter hypermultiplets. To incorporate D6 branes we have to
replace $Q = \mathbb{R}^3 \times \mathbf{S}^1$ by
$\tilde{Q}$. As before, the type IIA
configuration of D4 and NS fivebranes is described by a complex curve
$\Sigma$, now embedded in $\tilde{Q}$. $\Sigma$ will again be given by an
polynomial equation $F(y,v) = 0$; any dependence on $z$ has been
eliminated using $z = Q(v)/y$. The $C_n$ and $D_n$ configurations are
symmetric under $(v,y,z) \to (-v,y,z)$, the $B_n$ configurations are
symmetric under $(v,y,z) \to (-v,-y,-z)$ due to the asymptotic
relation between $t$, $t^{-1}$, and $y$, $z$.

With two NS fivebranes,  $F(y,v)$ is quadratic in
$y$. Furthermore we assume that there are no semi-infinite D4 branes
to the left or to the right, except those needed for the orthogonal
gauge groups. In this example we will choose $G = SO(2 r)$ but the
discussion also applies to gauge groups of the $B_r$ and $C_r$
series. Thus $F$ has the form
\begin{equation}
A(v) v^2 y^2 + B(v) y + C(v) v^2 = 0,
\eel{aaa}
where $A$, $B$, and $C$ are relatively prime polynomials, which as all
polynomial appearing here and below, depend on $v$ through $v^2$ only.
The condition that there be no semi-infinite
D4 branes implies that $A$ is constant; we set it to $1$.
Expressing \equ{aaa}  in terms of $z = Q(v^2)/y$ we obtain
\begin{equation}
C(v) v^2 z^2 + B(v) Q(v) z + Q(v)^2 v^2 = 0.
\end{equation}
The absence of semi-infinite D4 branes implies that $C$ divides $B Q$
and $Q^2$. In particular this means that $Q^2$ is divisible by $C$. So
any zero of $C$ must be a zero of $Q$ and may appear at most
quadratically in $C$. This means we can split $Q$ into three factors:
$Q_0$, $Q_1$, and $Q_2$, whose roots are roots of $C$ of order
$0$, $1$, and $2$, respectively. We will denote the number of zeroes
of the $Q_i$ by $q_i$.
Thus we have
\begin{equation}
C(v) = f Q_2(v)^2 Q_1(v),
\end{equation}
with $f$ being a non-zero constant.
In addition $B Q = B Q_0 Q_1 Q_2$ has to be divisible by $C$, leading to
\begin{equation}
B(v) = \tilde{B}(v) Q_2(v).
\end{equation}
for some polynomial $\tilde{B}(v)$.
Now $F$ assumes the form
\begin{equation}
v^2 y^2 + \tilde{B}(v) Q_2(v)y + v^2 f Q_2(v)^2 Q_1(v) = 0.
\end{equation}
In terms of the coordinate $\tilde{y} = y/Q_2(v)$ this becomes
\begin{equation}
v^2 \tilde{y}^2 + \tilde{B}(v) \tilde{y} + v^2 f Q_1(v) = 0.
\end{equation}
If $\tilde{B}(v)$ is a polynomial of degree $2 N$ in $v$, this presents
a curve for $SO(2 N)$ with $q_1$ flavors in the fundamental
representation. The zeroes of $Q_1$ correspond to D6 branes between
the two NS fivebranes, the zeroes of $Q_0$ and $Q_2$ correspond to D6
branes to the right and to the left of all NS fivebranes, respectively.
As long as $q_1 \neq 2 N - 2$ we can set $f=1$ by rescaling $v$ and
$\tilde{y}$.

Finally we want to include D6 branes in the models with chains of NS
fivebranes. The curve $\Sigma$ will now be defined by the zero locus of a
polynomial $F(y,v)$ of the form:
\begin{eqnarray}
y^{n+1} + P_1(v) v^2 y^n + P_2(v) y^{n-1} + P_3(v) v^2 y^{n-2} + P_4(v)
y^{n-3} + \ldots  \nonumber \\
\ldots + P_{n+1}(v) = 0.
\eeal{cccc}
The substitution $y = Q(v)/z$ leads to
\begin{equation}
P_{n+1} z^{n+1} + v^2 Q P_n z^n + Q^2 P_{n-1} z^{n-1} + \ldots +
Q^{n+1}=0 .
\end{equation}
Absence of semi-infinite D4 branes implies that $Q^m P_{n-m+1}$ is
divisible by $P_{n+1}$. Hence all zeroes of $P_{n+1}$ are zeroes of $Q$
and the multiplicities of the zeroes of $P_{n+1}$ must lie
between $0$ and $n+1$. Define polynomials
\begin{equation}
Q_m = \prod_{a = i_m + 1}^{i_{m+1}} (v^2 - e_a^2)\,,\quad
Q=\prod_{m=0}^{n+1}Q_m \,,\quad 0\leq i_0\leq i_1\leq\dots\leq i_n
\end{equation}
such that
\begin{equation}
P_{n+1} = f \prod_{m=0}^{n+1} Q_m^{n+1 - m}
\end{equation}
and for $1 \leq m \leq n$
\begin{equation}
P_m = B_m(v) \prod_{j=0}^{m-1} Q_j^{m - j}.
\end{equation}
Via the transformation $y \to y  Q_0$ the curve \equ{cccc}
takes the following
\begin{eqnarray}
y^{n+1} + v^2 B_1(v) y^n + B_2(v) Q_1(v) y^{n-1} + v^2 B_3(v) Q_1(v)^2
Q_2(v) + \ldots \nonumber \\
\ldots + f (\delta_{-1,(-1)^n}+v^2\delta_{1,(-1)^n})\,
\prod_{j=1}^{n} Q_j^{n+1-j} = 0.
\end{eqnarray}
For $n=1$ this reduces to the case of two NS fivebranes
discussed earlier in this section. For general $n$ we conclude from the
matter content that $d_s = i_{s+1} - i_s$ is the number of D6
branes between the $s$-th and the $(s+1)$-th NS fivebrane.
If the degree of $B_s$ is $2 r_s$ the gauge group is
\begin{equation}
G = SO(2 r_1) \times Sp(2 r_2) \times SO(2 r_3) \times \ldots.
\end{equation}
The hypermultiplets are in the representations $(2 r_s,
2 r_{s+1})$ plus $d_s$ hypermultiplets in the fundamental
representation of $SO(2 r_s)$($Sp(2 r_s)$) for even(odd) $s$.

\section{Conclusions And Outlook}

Using the ideas of \cite{witten} we have generalized the
interpretation of the Type IIA brane configuration giving rise to
$N=2$ supersymmetric field theories with and without matter, to all
classical groups. To a large part
this is a straightforward extension of ref. \cite{witten}.
The interesting new aspect is how the orientifold plane, which is
present in the Type IIA picture, manifests itself from the M theory
point of view. Here we have taken the point of view that the
orientifold plane is not directly visible in the Riemann surface which
describes the internal, one-complex-dimensional part of the M5
brane. We only detect it via the presence of additional semi-infinite
D4 branes, which do not add to the spectrum and via the symmetry of
the brane configuration. We do not use the knowledge from Type IIA
theory about the charge assignment of the orientifold plane but try
to understand it from the M-theoretic brane configuration.
We determined the RR charge of D4 branes, for instance those that stretch to
$x_6=\pm \infty$ in the $SO(2r)$ case, by observing that they have
non-trivial monodromy around the origin of the $t$ plane, namely,
they are wrapped around the circle in the $x^{10}$ direction. In fact
this maybe a useful tool in general to determine the RR charge. A
fivebrane of M theory, when it wraps the circle $N$ times, implies a
configuration of $N$ D4 branes in the Type IIA description. A similar
situation applies to the NS charge of the strings in Type IIA that
are obtained from wrapping the M theory membrane. Our starting point was
the known curves for the various gauge groups. We find a satisfactory
picture, which can be connected to the Type IIA picture for $B_r$, $C_r$ and
$D_r$ gauge groups.

The real challenge, in our mind, is the generalization to $N=1$ theories.
The Type IIA picture has been fully developed for all classical groups.
The Riemann surface in this case will be embedded in
$\mathbb{R}^5\times\mathbf{S}^1$.
Presumably it encodes information about the Coulomb branch of the
$N=1$ theories, but many new insights into $N=1$ theories might be
gained by a better understanding in the framework of M theory.

\section*{Acknowledgements}

We would like to thank D. Ghoshal, S. F\"orste, V. Kaplunovsky
and D. Matalliotakis for instructive discussions.

redpajama_set_name: RedPajamaArXiv


text:
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
//
// Copyright (c) 2009 INESC Porto
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation;
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
// Author: Pedro Fortuna  <pedro.fortuna@inescporto.pt> <pedro.fortuna@gmail.com>
//

#include <cmath>

#include "histogram.h"
#include "ns3/simulator.h"
#include "ns3/log.h"

#define DEFAULT_BIN_WIDTH       1
// #define RESERVED_BINS_INC	10

namespace ns3 {

NS_LOG_COMPONENT_DEFINE ("Histogram");

// uint32_t
// Histogram::GetSize () const
// {
//   return m_histogram.size ();
// }

uint32_t
Histogram::GetNBins () const
{
  return m_histogram.size ();
}

double
Histogram::GetBinStart (uint32_t index)
{
  return index*m_binWidth;
}

double
Histogram::GetBinEnd (uint32_t index)
{
  return (index + 1) * m_binWidth;
}

double
Histogram::GetBinWidth (uint32_t index) const
{
  return m_binWidth;
}

void
Histogram::SetDefaultBinWidth (double binWidth)
{
  NS_ASSERT (m_histogram.size () == 0); //we can only change the bin width if no values were added
  m_binWidth = binWidth;
}

uint32_t
Histogram::GetBinCount (uint32_t index)
{
  NS_ASSERT (index < m_histogram.size ());
  return m_histogram[index];
}

void
Histogram::AddValue (double value)
{
  uint32_t index = (uint32_t)std::floor (value/m_binWidth);

  //check if we need to resize the vector
  NS_LOG_DEBUG ("AddValue: index=" << index << ", m_histogram.size()=" << m_histogram.size ());

  if (index >= m_histogram.size ())
    {
      m_histogram.resize (index + 1, 0);
    }
  m_histogram[index]++;
}

Histogram::Histogram (double binWidth)
{
  m_binWidth = binWidth;
}

Histogram::Histogram ()
{
  m_binWidth = DEFAULT_BIN_WIDTH;
}

void
Histogram::SerializeToXmlStream (std::ostream &os, int indent, std::string elementName) const
{
#define INDENT(level) for (int __xpto = 0; __xpto < level; __xpto++) os << ' ';

  INDENT (indent); os << "<" << elementName // << " binWidth=\"" << m_binWidth << "\""
                      << " nBins=\"" << m_histogram.size () << "\""
                      << " >\n";
  indent += 2;

#if 1 // two alternative forms of representing bin data, one more verbose than the other one
  for (uint32_t index = 0; index < m_histogram.size (); index++)
    {
      if (m_histogram[index])
        {
          INDENT (indent);
          os << "<bin"
             << " index=\"" << (index) << "\""
             << " start=\"" << (index*m_binWidth) << "\""
             << " width=\"" << m_binWidth << "\""
             << " count=\"" << m_histogram[index] << "\""
             << " />\n";
        }
    }
#else
  INDENT (indent + 2);
  for (uint32_t index = 0; index < m_histogram.size (); index++)
    {
      if (index > 0)
        {
          os << " ";
        }
      os << m_histogram[index];
    }
  os << "\n";
#endif
  indent -= 2;
  INDENT (indent); os << "</" << elementName << ">\n";
#undef INDENT
}

} // namespace ns3


Wholesale VTURE Mens Russell Westbrook #0 & #2 UCLA Bruins Blue Stitched Basketball Jersey online direct from China Factory - Factory Price Free Shipping.
100% Polyester Mesh - Machine Washable - Tagless.
Back hem of jersey hangs two inches (2") longer than the front.
All letters and numbers are sewn and stitched on the jerseys. Sizes via S to 2XL are available.
100% Brand New.VTURE Link is an American trademark and can be searched at the USPTO ( United States Patent and Trademark Office).
Designed and produced by USA standard size. If you are not sure which size to select, you can inform your detailed size, such as bust, waist, hip size, height to us,we will help you make a correct decision.
VTURE is a vogue brand that is dedicated to the hottest trends, high quality and affordable prices.
Great looking jersey! Arrived pretty quick. No complaints.
Arrived in less than two weeks. Seems to be of fine quality.


Tama and the Bullet Club go out to a sponsor dinner in Nagoya. Yujiro ponders his "Pimp Juice" finisher, Kenny Omega plays Pokemon Go, NJPW Dojo student Aaron pays his dues, Finlay = Irish Jesus and Fale "celibate" during this year's G1 tour?
This Monday all of our free shows are moving onto their own feeds. Find out all about the changes so you don't miss out on your favorite shows!
Make sure you listen so you don't miss one episode of your favorite podcast!


text:
Judges Say 'American Idol' Singer Is "The Next Kelly Clarkson"
Of all the musical reality shows out there, American Idol is the classic example.
The show debuted on Fox in June of 2002 and has remained a mainstay of American culture ever since.
To date, the show has run for 17 seasons and 593 episodes—and in that time, it has helped break all kinds of new, talented acts for the world to see. Some of the biggest stars that have come from the franchise thus far include Carrie Underwood, Jennifer Hudson, Jordin Sparks and Kelly Clarkson.
And every so often, a new audition makes the judges think they've found the newest megastar.
That was the case in this audition from the show's 2019 season.
As the clip begins, the contestant introduces herself as Madison VanDenberg, a 16-year-old singer from Cohoes in upstate New York. Almost immediately, the judges can't believe what they're hearing—VanDenberg is so young!
As she explains, she's been playing piano since she was very young and has been doing musical gigs for "all her life" all over the place. Once again, judge Lionel Richie is shocked by what he's hearing.
After her introduction is over, she says she's going to perform "Speechless" by Dan and Shay on the piano.
Right as she starts singing, judge Katy Perry's eyes narrow in surprise at how incredible VanDenberg's voice is.
From the beginning, her piano playing is perfect and her voice is absolutely stunning. Although there are plenty of precocious musical talents that go on American Idol, there's typically one element about the youngest performers that is just a little bit off. For some, their control is a little bit off.
For others, their range isn't quite fully developed yet, or their tone could use a little bit of work. In VanDenberg's performance, everything is absolutely pitch perfect—and she soars between highs, lows and vocal runs with complete ease.
Before the song is over, all the judges are comparing their arms and showing each other how many goosebumps they have.
As she finally wraps up her song, the judges stand up and give her a round of applause.
When it's over, Richie says that he truly can't believe that she's only 16… and that she rendered all of the judges speechless!
As Perry says, that was the first time she's ever gotten goosebumps from someone's voice on the show—and that VanDenberg is as good Kelly Clarkson. Judge Luke Bryan can only echo what Perry says as well, that he thinks he's looking at the next huge star from the show!
Needless to say, the judges send her to Hollywood.
Although the show has been on for a long, long time, American Idol keeps finding new ways to surprise us.
Though we've seen some impressive teen contestants before, it's rare to find someone so composed and so mature as VanDenberg was.
Though it's unclear what else will happen throughout the season, we're guessing that we're going to be seeing more and more of her over the years to come. After all, it's not every day that you hear a voice as soulful and technically perfect as hers was.
Congratulations to Madison VanDenberg on stunning all of the judges! Watch her full audition in the clip below:
Source: YouTube/American Idol